From b9eb495cde119d423e9d584ed40d656d81a854a7 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:05:57 +0100 Subject: [PATCH 01/30] Create draft PR for #1032 From 0a2567adbc35bf97014c6f92743492312782e5fc Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:19:34 +0100 Subject: [PATCH 02/30] Normalize line endings via .gitattributes --- axopen.gitattributes | 40 +- src/Security/README.md | 102 ++ src/Security/docs/INSTALLATION.md | 130 +++ .../axopen_blazor_auth_app/App.razor | 15 + .../Data/WeatherForecast.cs | 13 + .../Data/WeatherForecastService.cs | 20 + .../Pages/Counter.razor | 18 + .../axopen_blazor_auth_app/Pages/Error.cshtml | 42 + .../Pages/Error.cshtml.cs | 29 + .../Pages/FetchData.razor | 47 + .../axopen_blazor_auth_app/Pages/Index.razor | 9 + .../Pages/Security.razor | 6 + .../axopen_blazor_auth_app/Pages/_Host.cshtml | 35 + .../axopen_blazor_auth_app/Program.cs | 106 +++ .../Properties/launchSettings.json | 37 + .../Properties/serviceDependencies.json | 8 + .../Properties/serviceDependencies.local.json | 8 + .../axopen_blazor_auth_app/Roles.cs | 45 + .../Shared/MainLayout.razor | 24 + .../Shared/MainLayout.razor.css | 70 ++ .../Shared/NavMenu.razor | 49 + .../Shared/NavMenu.razor.css | 68 ++ .../Shared/SurveyPrompt.razor | 16 + .../axopen_blazor_auth_app/_Imports.razor | 10 + .../appsettings.Development.json | 9 + .../axopen_blazor_auth_app/appsettings.json | 12 + .../axopen_blazor_auth_app.csproj | 35 + .../wwwroot/css/bootstrap/bootstrap.min.css | 7 + .../css/bootstrap/bootstrap.min.css.map | 1 + .../wwwroot/css/open-iconic/FONT-LICENSE | 86 ++ .../wwwroot/css/open-iconic/ICON-LICENSE | 21 + .../wwwroot/css/open-iconic/README.md | 114 +++ .../font/css/open-iconic-bootstrap.min.css | 1 + .../open-iconic/font/fonts/open-iconic.eot | Bin 0 -> 28196 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 0 -> 20996 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 +++++++++++ .../open-iconic/font/fonts/open-iconic.ttf | Bin 0 -> 28028 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 0 -> 14984 bytes .../wwwroot/css/site.css | 68 ++ .../wwwroot/favicon.png | Bin 0 -> 1148 bytes .../AXOpen.Security.Blazor.csproj | 44 + .../AXOpen.Security.Blazor/BlazorSecurity.cs | 11 + .../src/AXOpen.Security.Blazor/_Imports.razor | 15 + .../AXOpen.Security/AXOpen.Security.csproj | 16 + .../src/AXOpen.Security/Entities/Group.cs | 33 + .../src/AXOpen.Security/Entities/Role.cs | 16 + .../src/AXOpen.Security/Entities/User.cs | 44 + .../src/AXOpen.Security/RoleGroupManager.cs | 231 +++++ .../Services/IRepositoryService.cs | 17 + .../Services/RepositoryService.cs | 44 + .../Services/ServicesConfiguration.cs | 70 ++ .../src/AXOpen.Security/Stores/RoleStore.cs | 238 +++++ .../src/AXOpen.Security/Stores/UserStore.cs | 708 ++++++++++++++ .../BlazorSecurityTestsFixture.cs | 103 ++ .../RoleGroupStoreTests.cs | 421 ++++++++ .../tests/axopen_security_tests/Seed.cs | 89 ++ .../axopen_security_tests/UserStoreTests.cs | 896 ++++++++++++++++++ .../tests/axopen_security_tests/Usings.cs | 1 + .../axopen_security_tests/xunit.runner.json | 4 + .../AxOpen.Inspectors.Blazor.csproj | 78 ++ .../AxoInspectorDialogDialogView.razor | 86 ++ .../AxoInspectorDialogDialogView.razor.cs | 109 +++ .../GenericIconView.razor | 69 ++ .../GenericInspectorDataView.razor | 54 ++ .../InspectorViewTemplate.razor | 154 +++ .../Properties/AssemblyInfo.cs | 3 + .../AXOpen.Inspectors.blazor/_Imports.razor | 7 + 67 files changed, 5390 insertions(+), 15 deletions(-) create mode 100644 src/Security/README.md create mode 100644 src/Security/docs/INSTALLATION.md create mode 100644 src/Security/integrations/axopen_blazor_auth_app/App.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecast.cs create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecastService.cs create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/Counter.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml.cs create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/FetchData.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/Index.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/Security.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Pages/_Host.cshtml create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Program.cs create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Properties/launchSettings.json create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.json create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.local.json create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Roles.cs create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor.css create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor.css create mode 100644 src/Security/integrations/axopen_blazor_auth_app/Shared/SurveyPrompt.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/_Imports.razor create mode 100644 src/Security/integrations/axopen_blazor_auth_app/appsettings.Development.json create mode 100644 src/Security/integrations/axopen_blazor_auth_app/appsettings.json create mode 100644 src/Security/integrations/axopen_blazor_auth_app/axopen_blazor_auth_app.csproj create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css.map create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/FONT-LICENSE create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/ICON-LICENSE create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/README.md create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/fonts/open-iconic.eot create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/fonts/open-iconic.otf create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/fonts/open-iconic.svg create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/open-iconic/font/fonts/open-iconic.woff create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/site.css create mode 100644 src/Security/integrations/axopen_blazor_auth_app/wwwroot/favicon.png create mode 100644 src/Security/src/AXOpen.Security.Blazor/AXOpen.Security.Blazor.csproj create mode 100644 src/Security/src/AXOpen.Security.Blazor/BlazorSecurity.cs create mode 100644 src/Security/src/AXOpen.Security.Blazor/_Imports.razor create mode 100644 src/Security/src/AXOpen.Security/AXOpen.Security.csproj create mode 100644 src/Security/src/AXOpen.Security/Entities/Group.cs create mode 100644 src/Security/src/AXOpen.Security/Entities/Role.cs create mode 100644 src/Security/src/AXOpen.Security/Entities/User.cs create mode 100644 src/Security/src/AXOpen.Security/RoleGroupManager.cs create mode 100644 src/Security/src/AXOpen.Security/Services/IRepositoryService.cs create mode 100644 src/Security/src/AXOpen.Security/Services/RepositoryService.cs create mode 100644 src/Security/src/AXOpen.Security/Services/ServicesConfiguration.cs create mode 100644 src/Security/src/AXOpen.Security/Stores/RoleStore.cs create mode 100644 src/Security/src/AXOpen.Security/Stores/UserStore.cs create mode 100644 src/Security/tests/axopen_security_tests/BlazorSecurityTestsFixture.cs create mode 100644 src/Security/tests/axopen_security_tests/RoleGroupStoreTests.cs create mode 100644 src/Security/tests/axopen_security_tests/Seed.cs create mode 100644 src/Security/tests/axopen_security_tests/UserStoreTests.cs create mode 100644 src/Security/tests/axopen_security_tests/Usings.cs create mode 100644 src/Security/tests/axopen_security_tests/xunit.runner.json create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/AxOpen.Inspectors.Blazor.csproj create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/AxoInspectorDialog/AxoInspectorDialogDialogView.razor create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/AxoInspectorDialog/AxoInspectorDialogDialogView.razor.cs create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/GenericIconView.razor create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/GenericInspectorDataView.razor create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/InspectorViewTemplate.razor create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/Properties/AssemblyInfo.cs create mode 100644 src/inspectors/src/AXOpen.Inspectors.blazor/_Imports.razor diff --git a/axopen.gitattributes b/axopen.gitattributes index 6df083344..3c5161b27 100644 --- a/axopen.gitattributes +++ b/axopen.gitattributes @@ -1,16 +1,26 @@ -# Auto detect text files and perform LF normalization -* text=auto -# AxCode related files -*.yml text eol=lf -*.json text eol=lf -*.xml text eol=lf -*.st text eol=lf -*.mon text eol=lf +# Default: treat as text, normalize to LF in the repository +* text=auto eol=lf -#DotNET related files -*.cs text diff=csharp -*.cshtml text diff=html -*.csx text diff=csharp -*.sln text eol=crlf -*.slnx text eol=crlf -*.csproj text eol=crlf +# Typical source files (explicit, but the default already covers these) +*.c text eol=lf +*.cpp text eol=lf +*.h text eol=lf +*.py text eol=lf +*.js text eol=lf +*.ts text eol=lf +*.sh text eol=lf +*.yaml text eol=lf +*.yml text eol=lf +*.json text eol=lf + +# Windows-native scripts that often *must* be CRLF in the working tree +# (repo still stores LF; checkout converts to CRLF) +*.bat text eol=crlf +*.cmd text eol=crlf +*.ps1 text eol=crlf + +# Binary files (never touch line endings) +*.png -text +*.jpg -text +*.zip -text +*.pdf -text \ No newline at end of file diff --git a/src/Security/README.md b/src/Security/README.md new file mode 100644 index 000000000..7e9837eb8 --- /dev/null +++ b/src/Security/README.md @@ -0,0 +1,102 @@ +# AXOpen.Security + +AxOpen.Security is library which provides authentication and authorization in Blazor AX applications. It is based on a default solution for authentication in Blazor, which is extended by using implemented repositories within Ax.Open.Data. As a result, multiple storage providers for security can be used. + +## Installation + +The security library is available in form of NuGet package. Detailed installation instructions of security into empty Blazor project is located in [security installation article](docs/INSTALLATION.md). + +## Basic concepts + +Each user is limited to having just a single group. A group is formed by a collection of multiple roles. When a user is assigned to a group, they possess all the roles associated with that group. +It is possible for a single role to be assigned to multiple groups. + +## Security views + +SecurityManagementView component serves for managing users. It is available only if user is logged in with administrator rights. + +When user is logged in with administrator rights, it is possible to modify all available users and groups. Administrator can delete users or change group. + +### User management + +The SecurityManagementView component includes a tab dedicated to user management. Within this tab, users can be updated or newly created. When a user is selected, a card is displayed showing the current data for that user, there is an option to update or delete user. + +![user management](assets/UserManagement.png) + +### Group Management + +The SecurityManagementView component includes a tab for group management. Within this tab, groups can be updated or newly created. When a group is selected, a card is displayed showing the assigned roles for that group. Users have the option assigned or unassign roles or delete group. + +![group management](assets/GroupManagement.png) + +### Account Management + +In account management view is possible to change the your user data, like email address or password. + +![account management](assets/AccountManagement.png) + +### User Create + +In user create view is possible to new user. + +![Create user](assets/CreateUser.png) + +## AuthorizeView and AuthenticationContext + +There are two ways how to work with authentication and authorization. + +- Use of the `AuthorizeView` component in Blazor component +- Use of the `AuthenticationStateProvider` within a C# class + +### Use of AuthorizeView + +The `AuthorizeView` is used to create a secure views within a Blazor application. It contains two child components `Authorized` and `NotAuthorized`, which serves for visualizing view in a corresponded views. In addition, the parameter `Roles` can be used to specified roles, based on which the authorized view is shown. + +The `AuthorizeView` contain base class named `context`, which is used to access identity of currently logged in user. + +The example of usage of `AuthorizeView` within a Blazor component is shown below: + +```html + + +

You have role Administrator.

+

Your name is: @context.User.Identity.Name

+
+ +

You dont have role Administrator.

+
+
+``` + +If the user is authenticated and is also authorized with the `Administrator` role, the authorized view is shown. Otherwise, non-authorized view is displayed. + +Also, there is a possibility to call method from `RoleGroupManager` called `GetRoles`, which takes as parameter name of the group and returns corresponded roles. `RoleGroupManager` is accessible from `IRepositoryService`. + +```html +@inject IRepositoryService rs + + +``` + +### Use of AuthenticationStateProvider + +The `AuthenticationStateProvider` serves for accessing current logged in user and his claims. This provider can be injected to any C# class (either from constructor injection (in ViewModel) or with `Inject` attribute in Blazor component), where user need to work with authentication context. The authentication context of current user can be accessed in following way: + +```C# +@page "/mypage" +@inject AuthenticationStateProvider _asp + +@code +{ + protected override async Task OnInitializedAsync() + { + var context = await _asp.GetAuthenticationStateAsync(); + var isAuth = context.User.Identity.IsAuthenticated; + if (isAuth) + { + Console.Writeline("I'm authenticated"); + } + } +} + +``` \ No newline at end of file diff --git a/src/Security/docs/INSTALLATION.md b/src/Security/docs/INSTALLATION.md new file mode 100644 index 000000000..53833b65a --- /dev/null +++ b/src/Security/docs/INSTALLATION.md @@ -0,0 +1,130 @@ +# Installation + +All necessary logic for security is located in AxOpen.Security library. + +## 1. Install AxOpen.Security NuGet package or add reference to this project + +## 2. Add reference to AxOpen.Security assembly. + +Go to `App.razor` and add `AdditionalAssemblies` as parameter of `Router` component. The following line must be added to `Router` component: + +```C# +AdditionalAssemblies="new[] { typeof(BlazorSecurity).Assembly}"> +``` + +Also, make sure, that `Router` component is wrapped inside `CascadingAuthenticationState` component. At the end, the `Router` component should look like this: + +```html + + + ... + + +``` + +## 3. Configure Ax Blazor security services in dependency injection container of Blazor application located in `Program.cs` file. + +To correctly configure security services you must: + +- configure repository +- create in-app roles +- configure AxBlazorSecurity in DI container + +### **Configuring repository** +The security requires 2 instances of repositories: +- for persistence of user data +- for persistence of groups of roles + +Within AXOpen 4 different types of repositories are available: +- InMemory +- Json +- MongoDB +- RavenDB + +For example, the Json repository can be configured as follows: + +[!code-csharp[](../../../src/security/integrations/axopen_blazor_auth_app/Program.cs?name=SetupJson)] + +Add `SetUpJson` method in `Program.cs` file. + +### **Creating in-app roles** + +In your Blazor application create new static class `Roles` and specify the roles, that will be used in your application. You can add as many roles as you want. The `Roles` class can be defined like this: + +```C# +public static class Roles +{ + public static List CreateRoles() + { + var roles = new List + { + new Role(process_settings_access), + new Role(process_traceability_access), + }; + + return roles; + } + + public const string process_settings_access = nameof(process_settings_access); + public const string process_traceability_access = nameof(process_traceability_access); +} +``` + +### **Configure AxBlazorSecurity services** + +Finally, the `AxBlazorSecurity` security can be configured in DI container of Blazor application. Go to `Program.cs` file and add following line to builder: + + +[!code-csharp[](../../../src/security/integrations/axopen_blazor_auth_app/Program.cs?name=AxConfiguration)] + + +The first parameter is set up repository and the second parameter are created roles. + +## 4. Add security views to application + +Go to `MainLayout.razor` located in `Shared` folder and add `LoginDisplay` view inside top bar. +```html +
+
+ +
+ +
+ @Body +
+
+``` + + +Within `Pages` of the Blazor application, create new `Security.razor` page and add there `SecurityManagementView`. + +```html +@page "/Security" + +

Security

+ + + +``` + +Add you security view inside the navigation menu in `NavMenu.razor`: + +```html + +``` +## Default login + +If everything done correctly, now security should be available in Blazor application. +Now it should be possible to log-in with default user. +The default user is created on application startup with following credentials: + +- Username: **admin** +- Password: **admin** + +The user has default `Administrator` role and is in default `AdminGroup`. + diff --git a/src/Security/integrations/axopen_blazor_auth_app/App.razor b/src/Security/integrations/axopen_blazor_auth_app/App.razor new file mode 100644 index 000000000..f828c64c2 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/App.razor @@ -0,0 +1,15 @@ +@using AxOpen.Security.Service; + + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
+
diff --git a/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecast.cs b/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecast.cs new file mode 100644 index 000000000..89099dc8b --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecast.cs @@ -0,0 +1,13 @@ +namespace axopen_blazor_auth_app.Data +{ + public class WeatherForecast + { + public DateOnly Date { get; set; } + + public int TemperatureC { get; set; } + + public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); + + public string? Summary { get; set; } + } +} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecastService.cs b/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecastService.cs new file mode 100644 index 000000000..3bdbf07c3 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Data/WeatherForecastService.cs @@ -0,0 +1,20 @@ +namespace axopen_blazor_auth_app.Data +{ + public class WeatherForecastService + { + private static readonly string[] Summaries = new[] + { + "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" + }; + + public Task GetForecastAsync(DateOnly startDate) + { + return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast + { + Date = startDate.AddDays(index), + TemperatureC = Random.Shared.Next(-20, 55), + Summary = Summaries[Random.Shared.Next(Summaries.Length)] + }).ToArray()); + } + } +} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/Counter.razor b/src/Security/integrations/axopen_blazor_auth_app/Pages/Counter.razor new file mode 100644 index 000000000..ef23cb316 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/Counter.razor @@ -0,0 +1,18 @@ +@page "/counter" + +Counter + +

Counter

+ +

Current count: @currentCount

+ + + +@code { + private int currentCount = 0; + + private void IncrementCount() + { + currentCount++; + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml b/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml new file mode 100644 index 000000000..52c9a2c51 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml @@ -0,0 +1,42 @@ +@page +@model axopen_blazor_auth_app.Pages.ErrorModel + + + + + + + + Error + + + + + +
+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml.cs b/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml.cs new file mode 100644 index 000000000..3212fa136 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/Error.cshtml.cs @@ -0,0 +1,29 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Diagnostics; +using Microsoft.AspNetCore.Components; + +namespace axopen_blazor_auth_app.Pages +{ + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + [IgnoreAntiforgeryToken] + public class ErrorModel : PageModel + { + [Inject] + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + private readonly ILogger _logger; + + public ErrorModel(ILogger logger) + { + _logger = logger; + } + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } + } +} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/FetchData.razor b/src/Security/integrations/axopen_blazor_auth_app/Pages/FetchData.razor new file mode 100644 index 000000000..d238e93c4 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/FetchData.razor @@ -0,0 +1,47 @@ +@page "/fetchdata" +@using axopen_blazor_auth_app.Data +@inject WeatherForecastService ForecastService + +Weather forecast + +

Weather forecast

+ +

This component demonstrates fetching data from a service.

+ +@if (forecasts == null) +{ +

Loading...

+} +else +{ + + + + + + + + + + + @foreach (var forecast in forecasts) + { + + + + + + + } + +
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
+} + +@code { + private WeatherForecast[]? forecasts; + + protected override async Task OnInitializedAsync() + { + forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now)); + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/Index.razor b/src/Security/integrations/axopen_blazor_auth_app/Pages/Index.razor new file mode 100644 index 000000000..6085c4aa9 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/Index.razor @@ -0,0 +1,9 @@ +@page "/" + +Index + +

Hello, world!

+ +Welcome to your new app. + + diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/Security.razor b/src/Security/integrations/axopen_blazor_auth_app/Pages/Security.razor new file mode 100644 index 000000000..827d511db --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/Security.razor @@ -0,0 +1,6 @@ + @page "/Security" + +

Security

+ + + diff --git a/src/Security/integrations/axopen_blazor_auth_app/Pages/_Host.cshtml b/src/Security/integrations/axopen_blazor_auth_app/Pages/_Host.cshtml new file mode 100644 index 000000000..c97b18a26 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Pages/_Host.cshtml @@ -0,0 +1,35 @@ +@page "/" +@using Microsoft.AspNetCore.Components.Web +@namespace axopen_blazor_auth_app.Pages +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers + + + + + + + + + + + + + + + + +
+ + An error has occurred. This application may no longer respond until reloaded. + + + An unhandled exception has occurred. See browser dev tools for details. + + Reload + 🗙 +
+ + + + + diff --git a/src/Security/integrations/axopen_blazor_auth_app/Program.cs b/src/Security/integrations/axopen_blazor_auth_app/Program.cs new file mode 100644 index 000000000..41b0c55a4 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Program.cs @@ -0,0 +1,106 @@ + +using axopen_blazor_auth_app.Data; +using AxOpen.Security.Services; +using System.Reflection; +using AXOpen.Base.Data; +using AXOpen.Data.Json; +using AxOpen.Security.Entities; +using axopen_blazor_auth_app; +using AxOpen.Security; +using AXOpen.Data.MongoDb; +using AXOpen.Base.Dialogs; +using AXOpen.Core.Blazor.AxoAlertDialog; +using AXOpen.Core; +using AXOpen.Logging; +using Serilog; +using AXOpen; +using AXSharp.Presentation.Blazor.Services; + +var builder = WebApplication.CreateBuilder(args); + +// +builder.Services.ConfigureAxBlazorSecurity(SetUpJSon(), Roles.CreateRoles()); +// + +builder.Services.AddLocalization(); +builder.Services.AddRazorPages(); +builder.Services.AddServerSideBlazor(); + +builder.Services.AddIxBlazorServices(); +builder.Services.AddAxoCoreServices(); + +builder.Services.AddSingleton(); + +AxoApplication.CreateBuilder().ConfigureLogger(new SerilogLogger(new LoggerConfiguration() + .WriteTo.Console().MinimumLevel.Verbose() + .CreateLogger())); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseMigrationsEndPoint(); +} +else +{ + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); +} + +app.UseHttpsRedirection(); + +app.UseStaticFiles(); + +app.UseRouting(); + +app.UseAuthorization(); + +app.MapControllers(); +app.MapBlazorHub(); +app.MapFallbackToPage("/_Host"); + +app.Run(); + + +// +static (IRepository, IRepository) SetUpJSon(string path = "..\\..\\..\\..\\..\\JSONREPOS\\") +{ + var executingAssemblyFile = new FileInfo(Assembly.GetExecutingAssembly().Location); + var repositoryDirectory = Path.GetFullPath($"{executingAssemblyFile.Directory}{path}"); + if (!Directory.Exists(repositoryDirectory)) + { + Directory.CreateDirectory(repositoryDirectory); + } + IRepository userRepo = new JsonRepository(new JsonRepositorySettings(Path.Combine(repositoryDirectory, "Users"))); + IRepository groupRepo = new JsonRepository(new JsonRepositorySettings(Path.Combine(repositoryDirectory, "Groups"))); + + return (userRepo, groupRepo); +} +// +static (IRepository, IRepository) SetUpMongo(string path = "Blazor") +{ + var MongoDatabaseName = path; + var MongoConnectionString = "mongodb://localhost:27017"; + + IRepository userRepo = AXOpen.Data.MongoDb.Repository.Factory(new MongoDbRepositorySettings(MongoConnectionString, MongoDatabaseName, "Users", idExpression: t => t.Id)); + IRepository groupRepo = AXOpen.Data.MongoDb.Repository.Factory(new MongoDbRepositorySettings(MongoConnectionString, MongoDatabaseName, "Groups")); + return (userRepo, groupRepo); +} + +//public static (IRepository, IRepository) SetUpRavenDB(string[] urls, string path = "Blazor", string certPath = "", string certPass = "") +//{ +// IRepository userRepo = new RavenDbRepository(new RavenDbRepositorySettings(urls, path, certPath, certPass)); +// IRepository groupRepo = new RavenDbRepository(new RavenDbRepositorySettings(urls, path, certPath, certPass)); + +// return (userRepo, groupRepo); +//} + +//public static (IRepository, IRepository) SetUpInMemory() +//{ +// IRepository userRepo = new InMemoryRepository(new InMemoryRepositorySettings()); +// IRepository groupRepo = new InMemoryRepository(new InMemoryRepositorySettings()); + +// return (userRepo, groupRepo); +//} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Properties/launchSettings.json b/src/Security/integrations/axopen_blazor_auth_app/Properties/launchSettings.json new file mode 100644 index 000000000..7905eee90 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Properties/launchSettings.json @@ -0,0 +1,37 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:33343", + "sslPort": 44334 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5077", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:7108;http://localhost:5077", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.json b/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.json new file mode 100644 index 000000000..d8177e071 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "mssql1": { + "type": "mssql", + "connectionId": "ConnectionStrings:DefaultConnection" + } + } +} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.local.json b/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.local.json new file mode 100644 index 000000000..299aa9aa8 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Properties/serviceDependencies.local.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "mssql1": { + "type": "mssql.local", + "connectionId": "ConnectionStrings:DefaultConnection" + } + } +} \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/Roles.cs b/src/Security/integrations/axopen_blazor_auth_app/Roles.cs new file mode 100644 index 000000000..aa470dd82 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Roles.cs @@ -0,0 +1,45 @@ +using AxOpen.Security; +using AxOpen.Security.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + + +namespace axopen_blazor_auth_app +{ + public static class Roles + { + public static List CreateRoles() + { + var roles = new List + { + new Role(process_settings_access), + new Role(process_traceability_access), + new Role(can_user_open_technological_settings), + new Role(ground_position_start), + new Role(automat_start), + new Role(station_details), + new Role(technology_settings_access), + new Role(manual_start), + new Role(sequencer_step), + new Role(technology_automat_all), + new Role(technology_ground_all) + }; + + return roles; + } + + public const string process_settings_access = nameof(process_settings_access); + public const string process_traceability_access = nameof(process_traceability_access); + public const string can_user_open_technological_settings = nameof(can_user_open_technological_settings); + public const string ground_position_start = nameof(ground_position_start); + public const string automat_start = nameof(automat_start); + public const string station_details = nameof(station_details); + public const string technology_settings_access = nameof(technology_settings_access); + public const string manual_start = nameof(manual_start); + public const string sequencer_step = nameof(sequencer_step); + public const string technology_automat_all = nameof(technology_automat_all); + public const string technology_ground_all = nameof(technology_ground_all); + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor b/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor new file mode 100644 index 000000000..e935be4a4 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor @@ -0,0 +1,24 @@ +@inherits LayoutComponentBase +@using AXOpen.Core.Blazor.AxoAlertDialog + +axopen_blazor_auth_app + +
+ + + @* //*@ +
+
+ +
+ +
+ @Body +
+
+ + + @* //
*@ +
diff --git a/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor.css b/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor.css new file mode 100644 index 000000000..551e4b276 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Shared/MainLayout.razor.css @@ -0,0 +1,70 @@ +.page { + position: relative; + display: flex; + flex-direction: column; +} + +main { + flex: 1; +} + +.sidebar { + background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); +} + +.top-row { + background-color: #f7f7f7; + border-bottom: 1px solid #d6d5d5; + justify-content: flex-end; + height: 3.5rem; + display: flex; + align-items: center; +} + + .top-row ::deep a, .top-row .btn-link { + white-space: nowrap; + margin-left: 1.5rem; + } + + .top-row a:first-child { + overflow: hidden; + text-overflow: ellipsis; + } + +@media (max-width: 640.98px) { + .top-row:not(.auth) { + display: none; + } + + .top-row.auth { + justify-content: space-between; + } + + .top-row a, .top-row .btn-link { + margin-left: 0; + } +} + +@media (min-width: 641px) { + .page { + flex-direction: row; + } + + .sidebar { + width: 250px; + height: 100vh; + position: sticky; + top: 0; + } + + .top-row { + position: sticky; + top: 0; + z-index: 1; + } + + .top-row, article { + padding-left: 2rem !important; + padding-right: 1.5rem !important; + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor b/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor new file mode 100644 index 000000000..18188af38 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor @@ -0,0 +1,49 @@ + + + + +@code { + private bool collapseNavMenu = true; + + private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null; + + private void ToggleNavMenu() + { + collapseNavMenu = !collapseNavMenu; + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor.css b/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor.css new file mode 100644 index 000000000..604b7a1a1 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Shared/NavMenu.razor.css @@ -0,0 +1,68 @@ +.navbar-toggler { + background-color: rgba(255, 255, 255, 0.1); +} + +.top-row { + height: 3.5rem; + background-color: rgba(0,0,0,0.4); +} + +.navbar-brand { + font-size: 1.1rem; +} + +.oi { + width: 2rem; + font-size: 1.1rem; + vertical-align: text-top; + top: -2px; +} + +.nav-item { + font-size: 0.9rem; + padding-bottom: 0.5rem; +} + + .nav-item:first-of-type { + padding-top: 1rem; + } + + .nav-item:last-of-type { + padding-bottom: 1rem; + } + + .nav-item ::deep a { + color: #d7d7d7; + border-radius: 4px; + height: 3rem; + display: flex; + align-items: center; + line-height: 3rem; + } + +.nav-item ::deep a.active { + background-color: rgba(255,255,255,0.25); + color: white; +} + +.nav-item ::deep a:hover { + background-color: rgba(255,255,255,0.1); + color: white; +} + +@media (min-width: 641px) { + .navbar-toggler { + display: none; + } + + .collapse { + /* Never collapse the sidebar for wide screens */ + display: block; + } + + .nav-scrollable { + /* Allow sidebar to scroll for tall menus */ + height: calc(100vh - 3.5rem); + overflow-y: auto; + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/Shared/SurveyPrompt.razor b/src/Security/integrations/axopen_blazor_auth_app/Shared/SurveyPrompt.razor new file mode 100644 index 000000000..ec64baaad --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/Shared/SurveyPrompt.razor @@ -0,0 +1,16 @@ +
+ + @Title + + + Please take our + brief survey + + and tell us what you think. +
+ +@code { + // Demonstrates how a parent component can supply parameters + [Parameter] + public string? Title { get; set; } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/_Imports.razor b/src/Security/integrations/axopen_blazor_auth_app/_Imports.razor new file mode 100644 index 000000000..356b723e4 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/_Imports.razor @@ -0,0 +1,10 @@ +@using System.Net.Http +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using axopen_blazor_auth_app +@using axopen_blazor_auth_app.Shared diff --git a/src/Security/integrations/axopen_blazor_auth_app/appsettings.Development.json b/src/Security/integrations/axopen_blazor_auth_app/appsettings.Development.json new file mode 100644 index 000000000..770d3e931 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "DetailedErrors": true, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/appsettings.json b/src/Security/integrations/axopen_blazor_auth_app/appsettings.json new file mode 100644 index 000000000..4bf9275b3 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/appsettings.json @@ -0,0 +1,12 @@ +{ + "ConnectionStrings": { + "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-axopen_blazor_auth_app-d99c88bd-b141-4af6-afe3-f7ccafae5cc2;Trusted_Connection=True;MultipleActiveResultSets=true" + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/Security/integrations/axopen_blazor_auth_app/axopen_blazor_auth_app.csproj b/src/Security/integrations/axopen_blazor_auth_app/axopen_blazor_auth_app.csproj new file mode 100644 index 000000000..b97f2b265 --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/axopen_blazor_auth_app.csproj @@ -0,0 +1,35 @@ + + + + + enable + enable + aspnet-axopen_blazor_auth_app-d99c88bd-b141-4af6-afe3-f7ccafae5cc2 + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + diff --git a/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css b/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css new file mode 100644 index 000000000..02ae65b5f --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-rgb:33,37,41;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--bs-gutter-x,.75rem);padding-left:var(--bs-gutter-x,.75rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:#212529;--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:#212529;--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:#212529;--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg:#e2e3e5;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg:#d1e7dd;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg:#cff4fc;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg:#fff3cd;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg:#f8d7da;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg:#f8f9fa;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg:#212529;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(49,132,253,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(60,153,110,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-info:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(11,172,204,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,164,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f9fafb;border-color:#f9fafb;box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9fafb;border-color:#f9fafb}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(211,212,213,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-dark{color:#fff;background-color:#212529;border-color:#212529}.btn-dark:hover{color:#fff;background-color:#1c1f23;border-color:#1a1e21}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#1c1f23;border-color:#1a1e21;box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1a1e21;border-color:#191c1f}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(66,70,73,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#212529;border-color:#212529}.btn-outline-primary{color:#0d6efd;border-color:#0d6efd}.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(13,110,253,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#0d6efd;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#fff;background-color:#198754;border-color:#198754}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-info:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(13,202,240,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#0dcaf0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f8f9fa;border-color:#f8f9fa}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-dark{color:#212529;border-color:#212529}.btn-outline-dark:hover{color:#fff;background-color:#212529;border-color:#212529}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#212529;border-color:#212529}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(33,37,41,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#212529;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-sm .offcanvas-bottom,.navbar-expand-sm .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-md .offcanvas-bottom,.navbar-expand-md .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-lg .offcanvas-bottom,.navbar-expand-lg .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xl .offcanvas-bottom,.navbar-expand-xl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand-xxl .offcanvas-bottom,.navbar-expand-xxl .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas-header{display:none}.navbar-expand .offcanvas{position:inherit;bottom:0;z-index:1000;flex-grow:1;visibility:visible!important;background-color:transparent;border-right:0;border-left:0;transition:none;transform:none}.navbar-expand .offcanvas-bottom,.navbar-expand .offcanvas-top{height:auto;border-top:0;border-bottom:0}.navbar-expand .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:#fff;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#0c63e4;background-color:#e7f1ff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.accordion-header{margin-bottom:0}.accordion-item{background-color:#fff;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#636464;background-color:#fefefe;border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{color:#141619;background-color:#d3d3d4;border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#212529;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background-color:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1rem}.offcanvas-header .btn-close{padding:.5rem .5rem;margin-top:-.5rem;margin-right:-.5rem;margin-bottom:-.5rem}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:1rem 1rem;overflow-y:auto}.offcanvas-start{top:0;left:0;width:400px;border-right:1px solid rgba(0,0,0,.2);transform:translateX(-100%)}.offcanvas-end{top:0;right:0;width:400px;border-left:1px solid rgba(0,0,0,.2);transform:translateX(100%)}.offcanvas-top{top:0;right:0;left:0;height:30vh;max-height:100%;border-bottom:1px solid rgba(0,0,0,.2);transform:translateY(-100%)}.offcanvas-bottom{right:0;left:0;height:30vh;max-height:100%;border-top:1px solid rgba(0,0,0,.2);transform:translateY(100%)}.offcanvas.show{transform:none}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentColor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#0d6efd}.link-primary:focus,.link-primary:hover{color:#0a58ca}.link-secondary{color:#6c757d}.link-secondary:focus,.link-secondary:hover{color:#565e64}.link-success{color:#198754}.link-success:focus,.link-success:hover{color:#146c43}.link-info{color:#0dcaf0}.link-info:focus,.link-info:hover{color:#3dd5f3}.link-warning{color:#ffc107}.link-warning:focus,.link-warning:hover{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:focus,.link-danger:hover{color:#b02a37}.link-light{color:#f8f9fa}.link-light:focus,.link-light:hover{color:#f9fafb}.link-dark{color:#212529}.link-dark:focus,.link-dark:hover{color:#1a1e21}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentColor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#0d6efd!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#0dcaf0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#212529!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.2rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css.map b/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css.map new file mode 100644 index 000000000..afcd9e33e --- /dev/null +++ b/src/Security/integrations/axopen_blazor_auth_app/wwwroot/css/bootstrap/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"iBAAA;;;;;ACAA,MAQI,UAAA,QAAA,YAAA,QAAA,YAAA,QAAA,UAAA,QAAA,SAAA,QAAA,YAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAAA,UAAA,QAAA,WAAA,KAAA,UAAA,QAAA,eAAA,QAIA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAIA,aAAA,QAAA,eAAA,QAAA,aAAA,QAAA,UAAA,QAAA,aAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAIA,iBAAA,EAAA,CAAA,GAAA,CAAA,IAAA,mBAAA,GAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,GAAA,CAAA,GAAA,cAAA,EAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,GAAA,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,CAAA,EAAA,CAAA,GAAA,eAAA,GAAA,CAAA,GAAA,CAAA,IAAA,cAAA,EAAA,CAAA,EAAA,CAAA,GAGF,eAAA,GAAA,CAAA,GAAA,CAAA,IACA,eAAA,CAAA,CAAA,CAAA,CAAA,EACA,cAAA,EAAA,CAAA,EAAA,CAAA,GAMA,qBAAA,SAAA,CAAA,aAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBACA,oBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UACA,cAAA,2EAQA,sBAAA,0BACA,oBAAA,KACA,sBAAA,IACA,sBAAA,IACA,gBAAA,QAIA,aAAA,KClCF,EC+CA,QADA,SD3CE,WAAA,WAeE,8CANJ,MAOM,gBAAA,QAcN,KACE,OAAA,EACA,YAAA,2BEmPI,UAAA,yBFjPJ,YAAA,2BACA,YAAA,2BACA,MAAA,qBACA,WAAA,0BACA,iBAAA,kBACA,yBAAA,KACA,4BAAA,YAUF,GACE,OAAA,KAAA,EACA,MAAA,QACA,iBAAA,aACA,OAAA,EACA,QAAA,IAGF,eACE,OAAA,IAUF,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAGA,YAAA,IACA,YAAA,IAIF,IAAA,GEwMQ,UAAA,uBAlKJ,0BFtCJ,IAAA,GE+MQ,UAAA,QF1MR,IAAA,GEmMQ,UAAA,sBAlKJ,0BFjCJ,IAAA,GE0MQ,UAAA,MFrMR,IAAA,GE8LQ,UAAA,oBAlKJ,0BF5BJ,IAAA,GEqMQ,UAAA,SFhMR,IAAA,GEyLQ,UAAA,sBAlKJ,0BFvBJ,IAAA,GEgMQ,UAAA,QF3LR,IAAA,GEgLM,UAAA,QF3KN,IAAA,GE2KM,UAAA,KFhKN,EACE,WAAA,EACA,cAAA,KCmBF,6BDRA,YAEE,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,iCAAA,KAAA,yBAAA,KAMF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAMF,GCIA,GDFE,aAAA,KCQF,GDLA,GCIA,GDDE,WAAA,EACA,cAAA,KAGF,MCKA,MACA,MAFA,MDAE,cAAA,EAGF,GACE,YAAA,IAKF,GACE,cAAA,MACA,YAAA,EAMF,WACE,OAAA,EAAA,EAAA,KAQF,ECNA,ODQE,YAAA,OAQF,OAAA,ME4EM,UAAA,OFrEN,MAAA,KACE,QAAA,KACA,iBAAA,QASF,ICpBA,IDsBE,SAAA,SEwDI,UAAA,MFtDJ,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAKN,EACE,MAAA,QACA,gBAAA,UAEA,QACE,MAAA,QAWF,2BAAA,iCAEE,MAAA,QACA,gBAAA,KCxBJ,KACA,ID8BA,IC7BA,KDiCE,YAAA,yBEcI,UAAA,IFZJ,UAAA,IACA,aAAA,cAOF,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,SAAA,KEAI,UAAA,OFKJ,SELI,UAAA,QFOF,MAAA,QACA,WAAA,OAIJ,KEZM,UAAA,OFcJ,MAAA,QACA,UAAA,WAGA,OACE,MAAA,QAIJ,IACE,QAAA,MAAA,MExBI,UAAA,OF0BJ,MAAA,KACA,iBAAA,QG7SE,cAAA,MHgTF,QACE,QAAA,EE/BE,UAAA,IFiCF,YAAA,IASJ,OACE,OAAA,EAAA,EAAA,KAMF,ICjDA,IDmDE,eAAA,OAQF,MACE,aAAA,OACA,gBAAA,SAGF,QACE,YAAA,MACA,eAAA,MACA,MAAA,QACA,WAAA,KAOF,GAEE,WAAA,QACA,WAAA,qBCxDF,MAGA,GAFA,MAGA,GDuDA,MCzDA,GD+DE,aAAA,QACA,aAAA,MACA,aAAA,EAQF,MACE,QAAA,aAMF,OAEE,cAAA,EAQF,iCACE,QAAA,ECtEF,OD2EA,MCzEA,SADA,OAEA,SD6EE,OAAA,EACA,YAAA,QE9HI,UAAA,QFgIJ,YAAA,QAIF,OC5EA,OD8EE,eAAA,KAKF,cACE,OAAA,QAGF,OAGE,UAAA,OAGA,gBACE,QAAA,EAOJ,0CACE,QAAA,KClFF,cACA,aACA,cDwFA,OAIE,mBAAA,OCxFF,6BACA,4BACA,6BDyFI,sBACE,OAAA,QAON,mBACE,QAAA,EACA,aAAA,KAKF,SACE,OAAA,SAUF,SACE,UAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EAQF,OACE,MAAA,KACA,MAAA,KACA,QAAA,EACA,cAAA,MEnNM,UAAA,sBFsNN,YAAA,QExXE,0BFiXJ,OExMQ,UAAA,QFiNN,SACE,MAAA,KChGJ,kCDuGA,uCCxGA,mCADA,+BAGA,oCAJA,6BAKA,mCD4GE,QAAA,EAGF,4BACE,OAAA,KASF,cACE,eAAA,KACA,mBAAA,UAmBF,4BACE,mBAAA,KAKF,+BACE,QAAA,EAMF,uBACE,KAAA,QAMF,6BACE,KAAA,QACA,mBAAA,OAKF,OACE,QAAA,aAKF,OACE,OAAA,EAOF,QACE,QAAA,UACA,OAAA,QAQF,SACE,eAAA,SAQF,SACE,QAAA,eInlBF,MFyQM,UAAA,QEvQJ,YAAA,IAKA,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QEvPR,eCrDE,aAAA,EACA,WAAA,KDyDF,aC1DE,aAAA,EACA,WAAA,KD4DF,kBACE,QAAA,aAEA,mCACE,aAAA,MAUJ,YFsNM,UAAA,OEpNJ,eAAA,UAIF,YACE,cAAA,KF+MI,UAAA,QE5MJ,wBACE,cAAA,EAIJ,mBACE,WAAA,MACA,cAAA,KFqMI,UAAA,OEnMJ,MAAA,QAEA,2BACE,QAAA,KE9FJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,QHGE,cAAA,OIRF,UAAA,KAGA,OAAA,KDcF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBJ+PM,UAAA,OI7PJ,MAAA,QElCA,WPqmBF,iBAGA,cACA,cACA,cAHA,cADA,eQzmBE,MAAA,KACA,cAAA,0BACA,aAAA,0BACA,aAAA,KACA,YAAA,KCwDE,yBF5CE,WAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cAAA,cACE,UAAA,OE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QGfN,KCAA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KACA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDHE,OCYF,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KXusBR,MWrsBU,cAAA,EAGF,KXusBR,MWrsBU,cAAA,EAPF,KXitBR,MW/sBU,cAAA,QAGF,KXitBR,MW/sBU,cAAA,QAPF,KX2tBR,MWztBU,cAAA,OAGF,KX2tBR,MWztBU,cAAA,OAPF,KXquBR,MWnuBU,cAAA,KAGF,KXquBR,MWnuBU,cAAA,KAPF,KX+uBR,MW7uBU,cAAA,OAGF,KX+uBR,MW7uBU,cAAA,OAPF,KXyvBR,MWvvBU,cAAA,KAGF,KXyvBR,MWvvBU,cAAA,KFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX45BR,SW15BU,cAAA,EAGF,QX45BR,SW15BU,cAAA,EAPF,QXs6BR,SWp6BU,cAAA,QAGF,QXs6BR,SWp6BU,cAAA,QAPF,QXg7BR,SW96BU,cAAA,OAGF,QXg7BR,SW96BU,cAAA,OAPF,QX07BR,SWx7BU,cAAA,KAGF,QX07BR,SWx7BU,cAAA,KAPF,QXo8BR,SWl8BU,cAAA,OAGF,QXo8BR,SWl8BU,cAAA,OAPF,QX88BR,SW58BU,cAAA,KAGF,QX88BR,SW58BU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXinCR,SW/mCU,cAAA,EAGF,QXinCR,SW/mCU,cAAA,EAPF,QX2nCR,SWznCU,cAAA,QAGF,QX2nCR,SWznCU,cAAA,QAPF,QXqoCR,SWnoCU,cAAA,OAGF,QXqoCR,SWnoCU,cAAA,OAPF,QX+oCR,SW7oCU,cAAA,KAGF,QX+oCR,SW7oCU,cAAA,KAPF,QXypCR,SWvpCU,cAAA,OAGF,QXypCR,SWvpCU,cAAA,OAPF,QXmqCR,SWjqCU,cAAA,KAGF,QXmqCR,SWjqCU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXs0CR,SWp0CU,cAAA,EAGF,QXs0CR,SWp0CU,cAAA,EAPF,QXg1CR,SW90CU,cAAA,QAGF,QXg1CR,SW90CU,cAAA,QAPF,QX01CR,SWx1CU,cAAA,OAGF,QX01CR,SWx1CU,cAAA,OAPF,QXo2CR,SWl2CU,cAAA,KAGF,QXo2CR,SWl2CU,cAAA,KAPF,QX82CR,SW52CU,cAAA,OAGF,QX82CR,SW52CU,cAAA,OAPF,QXw3CR,SWt3CU,cAAA,KAGF,QXw3CR,SWt3CU,cAAA,MFzDN,0BESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX2hDR,SWzhDU,cAAA,EAGF,QX2hDR,SWzhDU,cAAA,EAPF,QXqiDR,SWniDU,cAAA,QAGF,QXqiDR,SWniDU,cAAA,QAPF,QX+iDR,SW7iDU,cAAA,OAGF,QX+iDR,SW7iDU,cAAA,OAPF,QXyjDR,SWvjDU,cAAA,KAGF,QXyjDR,SWvjDU,cAAA,KAPF,QXmkDR,SWjkDU,cAAA,OAGF,QXmkDR,SWjkDU,cAAA,OAPF,QX6kDR,SW3kDU,cAAA,KAGF,QX6kDR,SW3kDU,cAAA,MFzDN,0BESE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SXgvDR,UW9uDU,cAAA,EAGF,SXgvDR,UW9uDU,cAAA,EAPF,SX0vDR,UWxvDU,cAAA,QAGF,SX0vDR,UWxvDU,cAAA,QAPF,SXowDR,UWlwDU,cAAA,OAGF,SXowDR,UWlwDU,cAAA,OAPF,SX8wDR,UW5wDU,cAAA,KAGF,SX8wDR,UW5wDU,cAAA,KAPF,SXwxDR,UWtxDU,cAAA,OAGF,SXwxDR,UWtxDU,cAAA,OAPF,SXkyDR,UWhyDU,cAAA,KAGF,SXkyDR,UWhyDU,cAAA,MCpHV,OACE,cAAA,YACA,qBAAA,YACA,yBAAA,QACA,sBAAA,oBACA,wBAAA,QACA,qBAAA,mBACA,uBAAA,QACA,oBAAA,qBAEA,MAAA,KACA,cAAA,KACA,MAAA,QACA,eAAA,IACA,aAAA,QAOA,yBACE,QAAA,MAAA,MACA,iBAAA,mBACA,oBAAA,IACA,WAAA,MAAA,EAAA,EAAA,EAAA,OAAA,0BAGF,aACE,eAAA,QAGF,aACE,eAAA,OAIF,uCACE,oBAAA,aASJ,aACE,aAAA,IAUA,4BACE,QAAA,OAAA,OAeF,gCACE,aAAA,IAAA,EAGA,kCACE,aAAA,EAAA,IAOJ,oCACE,oBAAA,EASF,yCACE,qBAAA,2BACA,MAAA,8BAQJ,cACE,qBAAA,0BACA,MAAA,6BAQA,4BACE,qBAAA,yBACA,MAAA,4BCxHF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,iBAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,cAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,aAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QDgIA,kBACE,WAAA,KACA,2BAAA,MHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,sBACE,WAAA,KACA,2BAAA,OE/IN,YACE,cAAA,MASF,gBACE,YAAA,oBACA,eAAA,oBACA,cAAA,EboRI,UAAA,QahRJ,YAAA,IAIF,mBACE,YAAA,kBACA,eAAA,kBb0QI,UAAA,QatQN,mBACE,YAAA,mBACA,eAAA,mBboQI,UAAA,QcjSN,WACE,WAAA,OdgSI,UAAA,Oc5RJ,MAAA,QCLF,cACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,Of8RI,UAAA,Ke3RJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,QACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KdGE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDhBN,cCiBQ,WAAA,MDGN,yBACE,SAAA,OAEA,wDACE,OAAA,QAKJ,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAOJ,2CAEE,OAAA,MAIF,gCACE,MAAA,QAEA,QAAA,EAHF,2BACE,MAAA,QAEA,QAAA,EAQF,uBAAA,wBAEE,iBAAA,QAGA,QAAA,EAIF,oCACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE3EF,iBAAA,QF6EE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECtEE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDuDJ,oCCtDM,WAAA,MDqEN,yEACE,iBAAA,QAGF,0CACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE9FF,iBAAA,QFgGE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECzFE,mBAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCD0EJ,0CCzEM,mBAAA,KAAA,WAAA,MDwFN,+EACE,iBAAA,QASJ,wBACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,EACA,cAAA,EACA,YAAA,IACA,MAAA,QACA,iBAAA,YACA,OAAA,MAAA,YACA,aAAA,IAAA,EAEA,wCAAA,wCAEE,cAAA,EACA,aAAA,EAWJ,iBACE,WAAA,0BACA,QAAA,OAAA,MfmJI,UAAA,QClRF,cAAA,McmIF,uCACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAGF,6CACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAIJ,iBACE,WAAA,yBACA,QAAA,MAAA,KfgII,UAAA,QClRF,cAAA,McsJF,uCACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAGF,6CACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAQF,sBACE,WAAA,2BAGF,yBACE,WAAA,0BAGF,yBACE,WAAA,yBAKJ,oBACE,MAAA,KACA,OAAA,KACA,QAAA,QAEA,mDACE,OAAA,QAGF,uCACE,OAAA,Md/LA,cAAA,OcmMF,0CACE,OAAA,MdpMA,cAAA,OiBdJ,aACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,QAAA,QAAA,OAEA,mBAAA,oBlB2RI,UAAA,KkBxRJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,iBAAA,gOACA,kBAAA,UACA,oBAAA,MAAA,OAAA,OACA,gBAAA,KAAA,KACA,OAAA,IAAA,MAAA,QjBFE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YESJ,mBAAA,KAAA,gBAAA,KAAA,WAAA,KFLI,uCEfN,aFgBQ,WAAA,MEMN,mBACE,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,uBAAA,mCAEE,cAAA,OACA,iBAAA,KAGF,sBAEE,iBAAA,QAKF,4BACE,MAAA,YACA,YAAA,EAAA,EAAA,EAAA,QAIJ,gBACE,YAAA,OACA,eAAA,OACA,aAAA,MlByOI,UAAA,QkBrON,gBACE,YAAA,MACA,eAAA,MACA,aAAA,KlBkOI,UAAA,QmBjSN,YACE,QAAA,MACA,WAAA,OACA,aAAA,MACA,cAAA,QAEA,8BACE,MAAA,KACA,YAAA,OAIJ,kBACE,MAAA,IACA,OAAA,IACA,WAAA,MACA,eAAA,IACA,iBAAA,KACA,kBAAA,UACA,oBAAA,OACA,gBAAA,QACA,OAAA,IAAA,MAAA,gBACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KACA,2BAAA,MAAA,aAAA,MAGA,iClBXE,cAAA,MkBeF,8BAEE,cAAA,IAGF,yBACE,OAAA,gBAGF,wBACE,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,0BACE,iBAAA,QACA,aAAA,QAEA,yCAII,iBAAA,8NAIJ,sCAII,iBAAA,sIAKN,+CACE,iBAAA,QACA,aAAA,QAKE,iBAAA,wNAIJ,2BACE,eAAA,KACA,OAAA,KACA,QAAA,GAOA,6CAAA,8CACE,QAAA,GAcN,aACE,aAAA,MAEA,+BACE,MAAA,IACA,YAAA,OACA,iBAAA,uJACA,oBAAA,KAAA,OlB9FA,cAAA,IeHE,WAAA,oBAAA,KAAA,YAIA,uCGyFJ,+BHxFM,WAAA,MGgGJ,qCACE,iBAAA,yIAGF,uCACE,oBAAA,MAAA,OAKE,iBAAA,sIAMR,mBACE,QAAA,aACA,aAAA,KAGF,WACE,SAAA,SACA,KAAA,cACA,eAAA,KAIE,yBAAA,0BACE,eAAA,KACA,OAAA,KACA,QAAA,IC9IN,YACE,MAAA,KACA,OAAA,OACA,QAAA,EACA,iBAAA,YACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAEA,kBACE,QAAA,EAIA,wCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAC1B,oCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAG5B,8BACE,OAAA,EAGF,kCACE,MAAA,KACA,OAAA,KACA,WAAA,QHzBF,iBAAA,QG2BE,OAAA,EnBZA,cAAA,KeHE,mBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YImBF,mBAAA,KAAA,WAAA,KJfE,uCIMJ,kCJLM,mBAAA,KAAA,WAAA,MIgBJ,yCHjCF,iBAAA,QGsCA,2CACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnB7BA,cAAA,KmBkCF,8BACE,MAAA,KACA,OAAA,KHnDF,iBAAA,QGqDE,OAAA,EnBtCA,cAAA,KeHE,gBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YI6CF,gBAAA,KAAA,WAAA,KJzCE,uCIiCJ,8BJhCM,gBAAA,KAAA,WAAA,MI0CJ,qCH3DF,iBAAA,QGgEA,8BACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnBvDA,cAAA,KmB4DF,qBACE,eAAA,KAEA,2CACE,iBAAA,QAGF,uCACE,iBAAA,QCvFN,eACE,SAAA,SAEA,6BtB+iFF,4BsB7iFI,OAAA,mBACA,YAAA,KAGF,qBACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KACA,QAAA,KAAA,OACA,eAAA,KACA,OAAA,IAAA,MAAA,YACA,iBAAA,EAAA,ELDE,WAAA,QAAA,IAAA,WAAA,CAAA,UAAA,IAAA,YAIA,uCKXJ,qBLYM,WAAA,MKCN,6BACE,QAAA,KAAA,OAEA,+CACE,MAAA,YADF,0CACE,MAAA,YAGF,0DAEE,YAAA,SACA,eAAA,QAHF,mCAAA,qDAEE,YAAA,SACA,eAAA,QAGF,8CACE,YAAA,SACA,eAAA,QAIJ,4BACE,YAAA,SACA,eAAA,QAMA,gEACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBAFF,yCtBmjFJ,2DACA,kCsBnjFM,QAAA,IACA,UAAA,WAAA,mBAAA,mBAKF,oDACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBCtDN,aACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,QACA,MAAA,KAEA,2BvB2mFF,0BuBzmFI,SAAA,SACA,KAAA,EAAA,EAAA,KACA,MAAA,GACA,UAAA,EAIF,iCvBymFF,gCuBvmFI,QAAA,EAMF,kBACE,SAAA,SACA,QAAA,EAEA,wBACE,QAAA,EAWN,kBACE,QAAA,KACA,YAAA,OACA,QAAA,QAAA,OtBsPI,UAAA,KsBpPJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,YAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,QrBpCE,cAAA,OFuoFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,MAAA,KtBgOI,UAAA,QClRF,cAAA,MFgpFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,OAAA,MtBuNI,UAAA,QClRF,cAAA,MqBgEJ,6BvBulFA,6BuBrlFE,cAAA,KvB0lFF,uEuB7kFI,8FrB/DA,wBAAA,EACA,2BAAA,EFgpFJ,iEuB3kFI,2FrBtEA,wBAAA,EACA,2BAAA,EqBgFF,0IACE,YAAA,KrBpEA,uBAAA,EACA,0BAAA,EsBzBF,gBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,eACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OFmsFJ,0BACA,yBwBrqFI,sCxBmqFJ,qCwBjqFM,QAAA,MA9CF,uBAAA,mCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2OACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,6BAAA,yCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,2CAAA,+BAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,sBAAA,kCAiFE,aAAA,QAGE,kDAAA,gDAAA,8DAAA,4DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2OACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,4BAAA,wCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,2BAAA,uCAsGE,aAAA,QAEA,mCAAA,+CACE,iBAAA,QAGF,iCAAA,6CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,6CAAA,yDACE,MAAA,QAKJ,qDACE,YAAA,KAvHF,oCxBwwFJ,mCwBxwFI,gDxBuwFJ,+CwBxoFQ,QAAA,EAIF,0CxB0oFN,yCwB1oFM,sDxByoFN,qDwBxoFQ,QAAA,EAjHN,kBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OF4xFJ,8BACA,6BwB9vFI,0CxB4vFJ,yCwB1vFM,QAAA,MA9CF,yBAAA,qCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2TACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,+BAAA,2CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,6CAAA,iCAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,wBAAA,oCAiFE,aAAA,QAGE,oDAAA,kDAAA,gEAAA,8DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2TACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,8BAAA,0CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,6BAAA,yCAsGE,aAAA,QAEA,qCAAA,iDACE,iBAAA,QAGF,mCAAA,+CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,+CAAA,2DACE,MAAA,QAKJ,uDACE,YAAA,KAvHF,sCxBi2FJ,qCwBj2FI,kDxBg2FJ,iDwB/tFQ,QAAA,EAEF,4CxBmuFN,2CwBnuFM,wDxBkuFN,uDwBjuFQ,QAAA,ECtIR,KACE,QAAA,aAEA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,gBAAA,KAEA,eAAA,OACA,OAAA,QACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,iBAAA,YACA,OAAA,IAAA,MAAA,YC8GA,QAAA,QAAA,OzBsKI,UAAA,KClRF,cAAA,OeHE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCQhBN,KRiBQ,WAAA,MQAN,WACE,MAAA,QAIF,sBAAA,WAEE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAcF,cAAA,cAAA,uBAGE,eAAA,KACA,QAAA,IAYF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,eCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,qBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,gCAAA,qBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,iCAAA,kCAAA,sBAAA,sBAAA,qCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,uCAAA,wCAAA,4BAAA,4BAAA,2CAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,wBAAA,wBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,YCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,kBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,6BAAA,kBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,8BAAA,+BAAA,mBAAA,mBAAA,kCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,oCAAA,qCAAA,yBAAA,yBAAA,wCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,qBAAA,qBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,WCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,iBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,4BAAA,iBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,6BAAA,8BAAA,kBAAA,kBAAA,iCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,mCAAA,oCAAA,wBAAA,wBAAA,uCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,oBAAA,oBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDNF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,uBCmBA,MAAA,QACA,aAAA,QAEA,6BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wCAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,yCAAA,0CAAA,8BAAA,4CAAA,8BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,+CAAA,gDAAA,oCAAA,kDAAA,oCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,gCAAA,gCAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,oBCmBA,MAAA,QACA,aAAA,QAEA,0BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,qCAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,sCAAA,uCAAA,2BAAA,yCAAA,2BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,4CAAA,6CAAA,iCAAA,+CAAA,iCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,6BAAA,6BAEE,MAAA,QACA,iBAAA,YDvDF,mBCmBA,MAAA,QACA,aAAA,QAEA,yBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,oCAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,qCAAA,sCAAA,0BAAA,wCAAA,0BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,2CAAA,4CAAA,gCAAA,8CAAA,gCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,4BAAA,4BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YD3CJ,UACE,YAAA,IACA,MAAA,QACA,gBAAA,UAEA,gBACE,MAAA,QAQF,mBAAA,mBAEE,MAAA,QAWJ,mBAAA,QCuBE,QAAA,MAAA,KzBsKI,UAAA,QClRF,cAAA,MuByFJ,mBAAA,QCmBE,QAAA,OAAA,MzBsKI,UAAA,QClRF,cAAA,MyBnBJ,MVgBM,WAAA,QAAA,KAAA,OAIA,uCUpBN,MVqBQ,WAAA,MUlBN,iBACE,QAAA,EAMF,qBACE,QAAA,KAIJ,YACE,OAAA,EACA,SAAA,OVDI,WAAA,OAAA,KAAA,KAIA,uCULN,YVMQ,WAAA,MUDN,gCACE,MAAA,EACA,OAAA,KVNE,WAAA,MAAA,KAAA,KAIA,uCUAJ,gCVCM,WAAA,MjBs3GR,UADA,SAEA,W4B34GA,QAIE,SAAA,SAGF,iBACE,YAAA,OCqBE,wBACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAhCJ,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,cAAA,EACA,YAAA,KAAA,MAAA,YAqDE,8BACE,YAAA,ED3CN,eACE,SAAA,SACA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,E3B+QI,UAAA,K2B7QJ,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gB1BVE,cAAA,O0BcF,+BACE,IAAA,KACA,KAAA,EACA,WAAA,QAYA,qBACE,cAAA,MAEA,qCACE,MAAA,KACA,KAAA,EAIJ,mBACE,cAAA,IAEA,mCACE,MAAA,EACA,KAAA,KnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,yBACE,cAAA,MAEA,yCACE,MAAA,KACA,KAAA,EAIJ,uBACE,cAAA,IAEA,uCACE,MAAA,EACA,KAAA,MAUN,uCACE,IAAA,KACA,OAAA,KACA,WAAA,EACA,cAAA,QC9CA,gCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAzBJ,WAAA,EACA,aAAA,KAAA,MAAA,YACA,cAAA,KAAA,MACA,YAAA,KAAA,MAAA,YA8CE,sCACE,YAAA,ED0BJ,wCACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,YAAA,QC5DA,iCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAlBJ,WAAA,KAAA,MAAA,YACA,aAAA,EACA,cAAA,KAAA,MAAA,YACA,YAAA,KAAA,MAuCE,uCACE,YAAA,EDoCF,iCACE,eAAA,EAMJ,0CACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,aAAA,QC7EA,mCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAWA,mCACE,QAAA,KAGF,oCACE,QAAA,aACA,aAAA,OACA,eAAA,OACA,QAAA,GA9BN,WAAA,KAAA,MAAA,YACA,aAAA,KAAA,MACA,cAAA,KAAA,MAAA,YAiCE,yCACE,YAAA,EDqDF,oCACE,eAAA,EAON,kBACE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,gBAMF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,KACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,gBAAA,KACA,YAAA,OACA,iBAAA,YACA,OAAA,EAcA,qBAAA,qBAEE,MAAA,QVzJF,iBAAA,QU8JA,sBAAA,sBAEE,MAAA,KACA,gBAAA,KVjKF,iBAAA,QUqKA,wBAAA,wBAEE,MAAA,QACA,eAAA,KACA,iBAAA,YAMJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,KACA,cAAA,E3B0GI,UAAA,Q2BxGJ,MAAA,QACA,YAAA,OAIF,oBACE,QAAA,MACA,QAAA,OAAA,KACA,MAAA,QAIF,oBACE,MAAA,QACA,iBAAA,QACA,aAAA,gBAGA,mCACE,MAAA,QAEA,yCAAA,yCAEE,MAAA,KVhNJ,iBAAA,sBUoNE,0CAAA,0CAEE,MAAA,KVtNJ,iBAAA,QU0NE,4CAAA,4CAEE,MAAA,QAIJ,sCACE,aAAA,gBAGF,wCACE,MAAA,QAGF,qCACE,MAAA,QE5OJ,W9B2rHA,oB8BzrHE,SAAA,SACA,QAAA,YACA,eAAA,O9B6rHF,yB8B3rHE,gBACE,SAAA,SACA,KAAA,EAAA,EAAA,K9BmsHJ,4CACA,0CAIA,gCADA,gCADA,+BADA,+B8BhsHE,mC9ByrHF,iCAIA,uBADA,uBADA,sBADA,sB8BprHI,QAAA,EAKJ,aACE,QAAA,KACA,UAAA,KACA,gBAAA,WAEA,0BACE,MAAA,K9BgsHJ,wC8B1rHE,kCAEE,YAAA,K9B4rHJ,4C8BxrHE,uD5BRE,wBAAA,EACA,2BAAA,EFqsHJ,6C8BrrHE,+B9BorHF,iCEvrHI,uBAAA,EACA,0BAAA,E4BqBJ,uBACE,cAAA,SACA,aAAA,SAEA,8BAAA,uCAAA,sCAGE,YAAA,EAGF,0CACE,aAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,eAAA,OACA,YAAA,WACA,gBAAA,OAEA,yB9BmpHF,+B8BjpHI,MAAA,K9BqpHJ,iD8BlpHE,2CAEE,WAAA,K9BopHJ,qD8BhpHE,gE5BvFE,2BAAA,EACA,0BAAA,EF2uHJ,sD8BhpHE,8B5B1GE,uBAAA,EACA,wBAAA,E6BxBJ,KACE,QAAA,KACA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,KAGA,MAAA,QACA,gBAAA,KdHI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,YAIA,uCcPN,UdQQ,WAAA,McCN,gBAAA,gBAEE,MAAA,QAKF,mBACE,MAAA,QACA,eAAA,KACA,OAAA,QAQJ,UACE,cAAA,IAAA,MAAA,QAEA,oBACE,cAAA,KACA,WAAA,IACA,OAAA,IAAA,MAAA,Y7BlBA,uBAAA,OACA,wBAAA,O6BoBA,0BAAA,0BAEE,aAAA,QAAA,QAAA,QAEA,UAAA,QAGF,6BACE,MAAA,QACA,iBAAA,YACA,aAAA,Y/BixHN,mC+B7wHE,2BAEE,MAAA,QACA,iBAAA,KACA,aAAA,QAAA,QAAA,KAGF,yBAEE,WAAA,K7B5CA,uBAAA,EACA,wBAAA,E6BuDF,qBACE,WAAA,IACA,OAAA,E7BnEA,cAAA,O6BuEF,4B/BmwHF,2B+BjwHI,MAAA,KbxFF,iBAAA,QlB+1HF,oB+B5vHE,oBAEE,KAAA,EAAA,EAAA,KACA,WAAA,O/B+vHJ,yB+B1vHE,yBAEE,WAAA,EACA,UAAA,EACA,WAAA,OAMF,8B/BuvHF,mC+BtvHI,MAAA,KAUF,uBACE,QAAA,KAEF,qBACE,QAAA,MCxHJ,QACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,OACA,gBAAA,cACA,YAAA,MAEA,eAAA,MAOA,mBhCs2HF,yBAGA,sBADA,sBADA,sBAGA,sBACA,uBgC12HI,QAAA,KACA,UAAA,QACA,YAAA,OACA,gBAAA,cAoBJ,cACE,YAAA,SACA,eAAA,SACA,aAAA,K/B2OI,UAAA,Q+BzOJ,gBAAA,KACA,YAAA,OAaF,YACE,QAAA,KACA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KAEA,sBACE,cAAA,EACA,aAAA,EAGF,2BACE,SAAA,OASJ,aACE,YAAA,MACA,eAAA,MAYF,iBACE,WAAA,KACA,UAAA,EAGA,YAAA,OAIF,gBACE,QAAA,OAAA,O/B6KI,UAAA,Q+B3KJ,YAAA,EACA,iBAAA,YACA,OAAA,IAAA,MAAA,Y9BzGE,cAAA,OeHE,WAAA,WAAA,KAAA,YAIA,uCemGN,gBflGQ,WAAA,Me2GN,sBACE,gBAAA,KAGF,sBACE,gBAAA,KACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,kBAAA,UACA,oBAAA,OACA,gBAAA,KAGF,mBACE,WAAA,6BACA,WAAA,KvB1FE,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC+yHV,oCgC7yHQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCo2HV,oCgCl2HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCy5HV,oCgCv5HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC88HV,oCgC58HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,mBAEI,UAAA,OACA,gBAAA,WAEA,+BACE,eAAA,IAEA,8CACE,SAAA,SAGF,yCACE,cAAA,MACA,aAAA,MAIJ,sCACE,SAAA,QAGF,oCACE,QAAA,eACA,WAAA,KAGF,mCACE,QAAA,KAGF,qCACE,QAAA,KAGF,8BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCmgIV,qCgCjgIQ,kCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,mCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SA1DN,eAEI,UAAA,OACA,gBAAA,WAEA,2BACE,eAAA,IAEA,0CACE,SAAA,SAGF,qCACE,cAAA,MACA,aAAA,MAIJ,kCACE,SAAA,QAGF,gCACE,QAAA,eACA,WAAA,KAGF,+BACE,QAAA,KAGF,iCACE,QAAA,KAGF,0BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCujIV,iCgCrjIQ,8BAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,+BACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,QAcR,4BACE,MAAA,eAEA,kCAAA,kCAEE,MAAA,eAKF,oCACE,MAAA,gBAEA,0CAAA,0CAEE,MAAA,eAGF,6CACE,MAAA,ehCqiIR,2CgCjiII,0CAEE,MAAA,eAIJ,8BACE,MAAA,gBACA,aAAA,eAGF,mCACE,iBAAA,4OAGF,2BACE,MAAA,gBAEA,6BhC8hIJ,mCADA,mCgC1hIM,MAAA,eAOJ,2BACE,MAAA,KAEA,iCAAA,iCAEE,MAAA,KAKF,mCACE,MAAA,sBAEA,yCAAA,yCAEE,MAAA,sBAGF,4CACE,MAAA,sBhCqhIR,0CgCjhII,yCAEE,MAAA,KAIJ,6BACE,MAAA,sBACA,aAAA,qBAGF,kCACE,iBAAA,kPAGF,0BACE,MAAA,sBACA,4BhC+gIJ,kCADA,kCgC3gIM,MAAA,KCvUN,MACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,UAAA,EAEA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iB/BME,cAAA,O+BFF,SACE,aAAA,EACA,YAAA,EAGF,kBACE,WAAA,QACA,cAAA,QAEA,8BACE,iBAAA,E/BCF,uBAAA,mBACA,wBAAA,mB+BEA,6BACE,oBAAA,E/BUF,2BAAA,mBACA,0BAAA,mB+BJF,+BjCk1IF,+BiCh1II,WAAA,EAIJ,WAGE,KAAA,EAAA,EAAA,KACA,QAAA,KAAA,KAIF,YACE,cAAA,MAGF,eACE,WAAA,QACA,cAAA,EAGF,sBACE,cAAA,EAQA,sBACE,YAAA,KAQJ,aACE,QAAA,MAAA,KACA,cAAA,EAEA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAEA,yB/BpEE,cAAA,mBAAA,mBAAA,EAAA,E+ByEJ,aACE,QAAA,MAAA,KAEA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAEA,wB/B/EE,cAAA,EAAA,EAAA,mBAAA,mB+ByFJ,kBACE,aAAA,OACA,cAAA,OACA,YAAA,OACA,cAAA,EAUF,mBACE,aAAA,OACA,YAAA,OAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,K/BnHE,cAAA,mB+BuHJ,UjCozIA,iBADA,ciChzIE,MAAA,KAGF,UjCmzIA,cEv6II,uBAAA,mBACA,wBAAA,mB+BwHJ,UjCozIA,iBE/5II,2BAAA,mBACA,0BAAA,mB+BuHF,kBACE,cAAA,OxBpGA,yBwBgGJ,YAQI,QAAA,KACA,UAAA,IAAA,KAGA,kBAEE,KAAA,EAAA,EAAA,GACA,cAAA,EAEA,wBACE,YAAA,EACA,YAAA,EAKA,mC/BpJJ,wBAAA,EACA,2BAAA,EF+7IJ,gDiCzyIU,iDAGE,wBAAA,EjC0yIZ,gDiCxyIU,oDAGE,2BAAA,EAIJ,oC/BrJJ,uBAAA,EACA,0BAAA,EF67IJ,iDiCtyIU,kDAGE,uBAAA,EjCuyIZ,iDiCryIU,qDAGE,0BAAA,GC7MZ,kBACE,SAAA,SACA,QAAA,KACA,YAAA,OACA,MAAA,KACA,QAAA,KAAA,QjC4RI,UAAA,KiC1RJ,MAAA,QACA,WAAA,KACA,iBAAA,KACA,OAAA,EhCKE,cAAA,EgCHF,gBAAA,KjBAI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,WAAA,CAAA,cAAA,KAAA,KAIA,uCiBhBN,kBjBiBQ,WAAA,MiBFN,kCACE,MAAA,QACA,iBAAA,QACA,WAAA,MAAA,EAAA,KAAA,EAAA,iBAEA,yCACE,iBAAA,gRACA,UAAA,gBAKJ,yBACE,YAAA,EACA,MAAA,QACA,OAAA,QACA,YAAA,KACA,QAAA,GACA,iBAAA,gRACA,kBAAA,UACA,gBAAA,QjBvBE,WAAA,UAAA,IAAA,YAIA,uCiBWJ,yBjBVM,WAAA,MiBsBN,wBACE,QAAA,EAGF,wBACE,QAAA,EACA,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,kBACE,cAAA,EAGF,gBACE,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,8BhCnCE,uBAAA,OACA,wBAAA,OgCqCA,gDhCtCA,uBAAA,mBACA,wBAAA,mBgC0CF,oCACE,WAAA,EAIF,6BhClCE,2BAAA,OACA,0BAAA,OgCqCE,yDhCtCF,2BAAA,mBACA,0BAAA,mBgC0CA,iDhC3CA,2BAAA,OACA,0BAAA,OgCgDJ,gBACE,QAAA,KAAA,QASA,qCACE,aAAA,EAGF,iCACE,aAAA,EACA,YAAA,EhCxFA,cAAA,EgC2FA,6CAAgB,WAAA,EAChB,4CAAe,cAAA,EAEf,mDhC9FA,cAAA,EiCnBJ,YACE,QAAA,KACA,UAAA,KACA,QAAA,EAAA,EACA,cAAA,KAEA,WAAA,KAOA,kCACE,aAAA,MAEA,0CACE,MAAA,KACA,cAAA,MACA,MAAA,QACA,QAAA,kCAIJ,wBACE,MAAA,QCzBJ,YACE,QAAA,KhCGA,aAAA,EACA,WAAA,KgCAF,WACE,SAAA,SACA,QAAA,MACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,QnBKI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCmBfN,WnBgBQ,WAAA,MmBPN,iBACE,QAAA,EACA,MAAA,QAEA,iBAAA,QACA,aAAA,QAGF,iBACE,QAAA,EACA,MAAA,QACA,iBAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKF,wCACE,YAAA,KAGF,6BACE,QAAA,EACA,MAAA,KlBlCF,iBAAA,QkBoCE,aAAA,QAGF,+BACE,MAAA,QACA,eAAA,KACA,iBAAA,KACA,aAAA,QC3CF,WACE,QAAA,QAAA,OAOI,kCnCqCJ,uBAAA,OACA,0BAAA,OmChCI,iCnCiBJ,wBAAA,OACA,2BAAA,OmChCF,0BACE,QAAA,OAAA,OpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MmChCF,0BACE,QAAA,OAAA,MpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MoC/BJ,OACE,QAAA,aACA,QAAA,MAAA,MrC8RI,UAAA,MqC5RJ,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,SpCKE,cAAA,OoCAF,aACE,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KCvBF,OACE,SAAA,SACA,QAAA,KAAA,KACA,cAAA,KACA,OAAA,IAAA,MAAA,YrCWE,cAAA,OqCNJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,mBACE,cAAA,KAGA,8BACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,QAAA,KAeF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,iBClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,6BACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,cClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,0BACE,MAAA,QD6CF,aClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,yBACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QCHF,wCACE,GAAK,sBAAA,MADP,gCACE,GAAK,sBAAA,MAKT,UACE,QAAA,KACA,OAAA,KACA,SAAA,OxCwRI,UAAA,OwCtRJ,iBAAA,QvCIE,cAAA,OuCCJ,cACE,QAAA,KACA,eAAA,OACA,gBAAA,OACA,SAAA,OACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,iBAAA,QxBZI,WAAA,MAAA,IAAA,KAIA,uCwBAN,cxBCQ,WAAA,MwBWR,sBvBYE,iBAAA,iKuBVA,gBAAA,KAAA,KAIA,uBACE,kBAAA,GAAA,OAAA,SAAA,qBAAA,UAAA,GAAA,OAAA,SAAA,qBAGE,uCAJJ,uBAKM,kBAAA,KAAA,UAAA,MCvCR,YACE,QAAA,KACA,eAAA,OAGA,aAAA,EACA,cAAA,ExCSE,cAAA,OwCLJ,qBACE,gBAAA,KACA,cAAA,QAEA,gCAEE,QAAA,uBAAA,KACA,kBAAA,QAUJ,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QAGA,8BAAA,8BAEE,QAAA,EACA,MAAA,QACA,gBAAA,KACA,iBAAA,QAGF,+BACE,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,KACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,6BxCrCE,uBAAA,QACA,wBAAA,QwCwCF,4BxC3BE,2BAAA,QACA,0BAAA,QwC8BF,0BAAA,0BAEE,MAAA,QACA,eAAA,KACA,iBAAA,KAIF,wBACE,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kCACE,iBAAA,EAEA,yCACE,WAAA,KACA,iBAAA,IAcF,uBACE,eAAA,IAGE,oDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,mDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,+CACE,WAAA,EAGF,yDACE,iBAAA,IACA,kBAAA,EAEA,gEACE,YAAA,KACA,kBAAA,IjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,2BACE,eAAA,IAGE,wDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,uDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,mDACE,WAAA,EAGF,6DACE,iBAAA,IACA,kBAAA,EAEA,oEACE,YAAA,KACA,kBAAA,KAcZ,kBxC9HI,cAAA,EwCiIF,mCACE,aAAA,EAAA,EAAA,IAEA,8CACE,oBAAA,ECpJJ,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,2BACE,MAAA,QACA,iBAAA,QAGE,wDAAA,wDAEE,MAAA,QACA,iBAAA,QAGF,yDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,wBACE,MAAA,QACA,iBAAA,QAGE,qDAAA,qDAEE,MAAA,QACA,iBAAA,QAGF,sDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,uBACE,MAAA,QACA,iBAAA,QAGE,oDAAA,oDAEE,MAAA,QACA,iBAAA,QAGF,qDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QCbR,WACE,WAAA,YACA,MAAA,IACA,OAAA,IACA,QAAA,MAAA,MACA,MAAA,KACA,WAAA,YAAA,0TAAA,MAAA,CAAA,IAAA,KAAA,UACA,OAAA,E1COE,cAAA,O0CLF,QAAA,GAGA,iBACE,MAAA,KACA,gBAAA,KACA,QAAA,IAGF,iBACE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBACA,QAAA,EAGF,oBAAA,oBAEE,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,QAAA,IAIJ,iBACE,OAAA,UAAA,gBAAA,iBCtCF,OACE,MAAA,MACA,UAAA,K5CmSI,UAAA,Q4ChSJ,eAAA,KACA,iBAAA,sBACA,gBAAA,YACA,OAAA,IAAA,MAAA,eACA,WAAA,EAAA,MAAA,KAAA,gB3CUE,cAAA,O2CPF,eACE,QAAA,EAGF,kBACE,QAAA,KAIJ,iBACE,MAAA,oBAAA,MAAA,iBAAA,MAAA,YACA,UAAA,KACA,eAAA,KAEA,mCACE,cAAA,OAIJ,cACE,QAAA,KACA,YAAA,OACA,QAAA,MAAA,OACA,MAAA,QACA,iBAAA,sBACA,gBAAA,YACA,cAAA,IAAA,MAAA,gB3CVE,uBAAA,mBACA,wBAAA,mB2CYF,yBACE,aAAA,SACA,YAAA,OAIJ,YACE,QAAA,OACA,UAAA,WC1CF,OACE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,OAAA,KACA,WAAA,OACA,WAAA,KAGA,QAAA,EAOF,cACE,SAAA,SACA,MAAA,KACA,OAAA,MAEA,eAAA,KAGA,0B7BlBI,WAAA,UAAA,IAAA,S6BoBF,UAAA,mB7BhBE,uC6BcJ,0B7BbM,WAAA,M6BiBN,0BACE,UAAA,KAIF,kCACE,UAAA,YAIJ,yBACE,OAAA,kBAEA,wCACE,WAAA,KACA,SAAA,OAGF,qCACE,WAAA,KAIJ,uBACE,QAAA,KACA,YAAA,OACA,WAAA,kBAIF,eACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,MAAA,KAGA,eAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,e5C3DE,cAAA,M4C+DF,QAAA,EAIF,gBCpFE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,qBAAS,QAAA,EACT,qBAAS,QAAA,GDgFX,cACE,QAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KACA,cAAA,IAAA,MAAA,Q5CtEE,uBAAA,kBACA,wBAAA,kB4CwEF,yBACE,QAAA,MAAA,MACA,OAAA,OAAA,OAAA,OAAA,KAKJ,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,KACA,UAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,SACA,QAAA,OACA,WAAA,IAAA,MAAA,Q5CzFE,2BAAA,kBACA,0BAAA,kB4C8FF,gBACE,OAAA,OrC3EA,yBqCkFF,cACE,UAAA,MACA,OAAA,QAAA,KAGF,yBACE,OAAA,oBAGF,uBACE,WAAA,oBAOF,UAAY,UAAA,OrCnGV,yBqCuGF,U9CywKF,U8CvwKI,UAAA,OrCzGA,0BqC8GF,UAAY,UAAA,QASV,kBACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,iCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,gC5C/KF,cAAA,E4CmLE,8BACE,WAAA,KAGF,gC5CvLF,cAAA,EOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,2BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,0CACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,yC5C/KF,cAAA,E4CmLE,uCACE,WAAA,KAGF,yC5CvLF,cAAA,G8ClBJ,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECJA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,Q+C1RJ,UAAA,WACA,QAAA,EAEA,cAAS,QAAA,GAET,wBACE,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MAEA,gCACE,SAAA,SACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,6CAAA,gBACE,QAAA,MAAA,EAEA,4DAAA,+BACE,OAAA,EAEA,oEAAA,uCACE,IAAA,KACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAKN,+CAAA,gBACE,QAAA,EAAA,MAEA,8DAAA,+BACE,KAAA,EACA,MAAA,MACA,OAAA,MAEA,sEAAA,uCACE,MAAA,KACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAKN,gDAAA,mBACE,QAAA,MAAA,EAEA,+DAAA,kCACE,IAAA,EAEA,uEAAA,0CACE,OAAA,KACA,aAAA,EAAA,MAAA,MACA,oBAAA,KAKN,8CAAA,kBACE,QAAA,EAAA,MAEA,6DAAA,iCACE,MAAA,EACA,MAAA,MACA,OAAA,MAEA,qEAAA,yCACE,KAAA,KACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,eACE,UAAA,MACA,QAAA,OAAA,MACA,MAAA,KACA,WAAA,OACA,iBAAA,K9C7FE,cAAA,OgDnBJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MDLA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,QiDzRJ,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,ehDIE,cAAA,MgDAF,wBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,MAEA,+BAAA,gCAEE,SAAA,SACA,QAAA,MACA,QAAA,GACA,aAAA,YACA,aAAA,MAMJ,4DAAA,+BACE,OAAA,mBAEA,oEAAA,uCACE,OAAA,EACA,aAAA,MAAA,MAAA,EACA,iBAAA,gBAGF,mEAAA,sCACE,OAAA,IACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAMJ,8DAAA,+BACE,KAAA,mBACA,MAAA,MACA,OAAA,KAEA,sEAAA,uCACE,KAAA,EACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,gBAGF,qEAAA,sCACE,KAAA,IACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAMJ,+DAAA,kCACE,IAAA,mBAEA,uEAAA,0CACE,IAAA,EACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,gBAGF,sEAAA,yCACE,IAAA,IACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,KAKJ,wEAAA,2CACE,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,OACA,QAAA,GACA,cAAA,IAAA,MAAA,QAKF,6DAAA,iCACE,MAAA,mBACA,MAAA,MACA,OAAA,KAEA,qEAAA,yCACE,MAAA,EACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,gBAGF,oEAAA,wCACE,MAAA,IACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,gBACE,QAAA,MAAA,KACA,cAAA,EjDuJI,UAAA,KiDpJJ,iBAAA,QACA,cAAA,IAAA,MAAA,ehDtHE,uBAAA,kBACA,wBAAA,kBgDwHF,sBACE,QAAA,KAIJ,cACE,QAAA,KAAA,KACA,MAAA,QC/IF,UACE,SAAA,SAGF,wBACE,aAAA,MAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OCtBA,uBACE,QAAA,MACA,MAAA,KACA,QAAA,GDuBJ,eACE,SAAA,SACA,QAAA,KACA,MAAA,KACA,MAAA,KACA,aAAA,MACA,4BAAA,OAAA,oBAAA,OlClBI,WAAA,UAAA,IAAA,YAIA,uCkCQN,elCPQ,WAAA,MjBgzLR,oBACA,oBmDhyLA,sBAGE,QAAA,MnDmyLF,0BmD/xLA,8CAEE,UAAA,iBnDkyLF,4BmD/xLA,4CAEE,UAAA,kBAWA,8BACE,QAAA,EACA,oBAAA,QACA,UAAA,KnD0xLJ,uDACA,qDmDxxLE,qCAGE,QAAA,EACA,QAAA,EnDyxLJ,yCmDtxLE,2CAEE,QAAA,EACA,QAAA,ElC/DE,WAAA,QAAA,GAAA,IAIA,uCjBq1LN,yCmD7xLE,2ClCvDM,WAAA,MjB01LR,uBmDtxLA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EACA,QAAA,EAEA,QAAA,KACA,YAAA,OACA,gBAAA,OACA,MAAA,IACA,QAAA,EACA,MAAA,KACA,WAAA,OACA,WAAA,IACA,OAAA,EACA,QAAA,GlCzFI,WAAA,QAAA,KAAA,KAIA,uCjB82LN,uBmDzyLA,uBlCpEQ,WAAA,MjBm3LR,6BADA,6BmD1xLE,6BAAA,6BAEE,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAGF,uBACE,MAAA,EnD8xLF,4BmDzxLA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,kBAAA,UACA,oBAAA,IACA,gBAAA,KAAA,KAWF,4BACE,iBAAA,wPAEF,4BACE,iBAAA,yPAQF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,KACA,gBAAA,OACA,QAAA,EAEA,aAAA,IACA,cAAA,KACA,YAAA,IACA,WAAA,KAEA,sCACE,WAAA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,QAAA,EACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,OAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,EAEA,WAAA,KAAA,MAAA,YACA,cAAA,KAAA,MAAA,YACA,QAAA,GlC5KE,WAAA,QAAA,IAAA,KAIA,uCkCwJJ,sClCvJM,WAAA,MkC2KN,6BACE,QAAA,EASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,QACA,KAAA,IACA,YAAA,QACA,eAAA,QACA,MAAA,KACA,WAAA,OnDoxLF,2CmD9wLE,2CAEE,OAAA,UAAA,eAGF,qDACE,iBAAA,KAGF,iCACE,MAAA,KE7NJ,kCACE,GAAK,UAAA,gBADP,0BACE,GAAK,UAAA,gBAIP,gBACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,OAAA,MAAA,MAAA,aACA,mBAAA,YAEA,cAAA,IACA,kBAAA,KAAA,OAAA,SAAA,eAAA,UAAA,KAAA,OAAA,SAAA,eAGF,mBACE,MAAA,KACA,OAAA,KACA,aAAA,KAQF,gCACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MANJ,wBACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MAKJ,cACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,iBAAA,aAEA,cAAA,IACA,QAAA,EACA,kBAAA,KAAA,OAAA,SAAA,aAAA,UAAA,KAAA,OAAA,SAAA,aAGF,iBACE,MAAA,KACA,OAAA,KAIA,uCACE,gBrDo/LJ,cqDl/LM,2BAAA,KAAA,mBAAA,MCjEN,WACE,SAAA,MACA,OAAA,EACA,QAAA,KACA,QAAA,KACA,eAAA,OACA,UAAA,KAEA,WAAA,OACA,iBAAA,KACA,gBAAA,YACA,QAAA,ErCKI,WAAA,UAAA,IAAA,YAIA,uCqCpBN,WrCqBQ,WAAA,MqCLR,oBPdE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,yBAAS,QAAA,EACT,yBAAS,QAAA,GOQX,kBACE,QAAA,KACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KAEA,6BACE,QAAA,MAAA,MACA,WAAA,OACA,aAAA,OACA,cAAA,OAIJ,iBACE,cAAA,EACA,YAAA,IAGF,gBACE,UAAA,EACA,QAAA,KAAA,KACA,WAAA,KAGF,iBACE,IAAA,EACA,KAAA,EACA,MAAA,MACA,aAAA,IAAA,MAAA,eACA,UAAA,kBAGF,eACE,IAAA,EACA,MAAA,EACA,MAAA,MACA,YAAA,IAAA,MAAA,eACA,UAAA,iBAGF,eACE,IAAA,EACA,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,cAAA,IAAA,MAAA,eACA,UAAA,kBAGF,kBACE,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,WAAA,IAAA,MAAA,eACA,UAAA,iBAGF,gBACE,UAAA,KCjFF,aACE,QAAA,aACA,WAAA,IACA,eAAA,OACA,OAAA,KACA,iBAAA,aACA,QAAA,GAEA,yBACE,QAAA,aACA,QAAA,GAKJ,gBACE,WAAA,KAGF,gBACE,WAAA,KAGF,gBACE,WAAA,MAKA,+BACE,kBAAA,iBAAA,GAAA,YAAA,SAAA,UAAA,iBAAA,GAAA,YAAA,SAIJ,oCACE,IACE,QAAA,IAFJ,4BACE,IACE,QAAA,IAIJ,kBACE,mBAAA,8DAAA,WAAA,8DACA,kBAAA,KAAA,KAAA,UAAA,KAAA,KACA,kBAAA,iBAAA,GAAA,OAAA,SAAA,UAAA,iBAAA,GAAA,OAAA,SAGF,oCACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IAFJ,4BACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IH9CF,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GIJF,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,gBACE,MAAA,QAGE,sBAAA,sBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,aACE,MAAA,QAGE,mBAAA,mBAEE,MAAA,QANN,YACE,MAAA,QAGE,kBAAA,kBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QCLR,OACE,SAAA,SACA,MAAA,KAEA,eACE,QAAA,MACA,YAAA,uBACA,QAAA,GAGF,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KAKF,WACE,kBAAA,KADF,WACE,kBAAA,mBADF,YACE,kBAAA,oBADF,YACE,kBAAA,oBCrBJ,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAQE,YACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,KjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,gBACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MCzBN,QACE,QAAA,KACA,eAAA,IACA,YAAA,OACA,WAAA,QAGF,QACE,QAAA,KACA,KAAA,EAAA,EAAA,KACA,eAAA,OACA,WAAA,QCRF,iB5Dk4MA,0D6D93ME,SAAA,mBACA,MAAA,cACA,OAAA,cACA,QAAA,YACA,OAAA,eACA,SAAA,iBACA,KAAA,wBACA,YAAA,iBACA,OAAA,YCXA,uBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,GCRJ,eCAE,SAAA,OACA,cAAA,SACA,YAAA,OCNF,IACE,QAAA,aACA,WAAA,QACA,MAAA,IACA,WAAA,IACA,iBAAA,aACA,QAAA,ICyDM,gBAOI,eAAA,mBAPJ,WAOI,eAAA,cAPJ,cAOI,eAAA,iBAPJ,cAOI,eAAA,iBAPJ,mBAOI,eAAA,sBAPJ,gBAOI,eAAA,mBAPJ,aAOI,MAAA,eAPJ,WAOI,MAAA,gBAPJ,YAOI,MAAA,eAPJ,WAOI,QAAA,YAPJ,YAOI,QAAA,cAPJ,YAOI,QAAA,aAPJ,YAOI,QAAA,cAPJ,aAOI,QAAA,YAPJ,eAOI,SAAA,eAPJ,iBAOI,SAAA,iBAPJ,kBAOI,SAAA,kBAPJ,iBAOI,SAAA,iBAPJ,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,QAOI,WAAA,EAAA,MAAA,KAAA,0BAPJ,WAOI,WAAA,EAAA,QAAA,OAAA,2BAPJ,WAOI,WAAA,EAAA,KAAA,KAAA,2BAPJ,aAOI,WAAA,eAPJ,iBAOI,SAAA,iBAPJ,mBAOI,SAAA,mBAPJ,mBAOI,SAAA,mBAPJ,gBAOI,SAAA,gBAPJ,iBAOI,SAAA,yBAAA,SAAA,iBAPJ,OAOI,IAAA,YAPJ,QAOI,IAAA,cAPJ,SAOI,IAAA,eAPJ,UAOI,OAAA,YAPJ,WAOI,OAAA,cAPJ,YAOI,OAAA,eAPJ,SAOI,KAAA,YAPJ,UAOI,KAAA,cAPJ,WAOI,KAAA,eAPJ,OAOI,MAAA,YAPJ,QAOI,MAAA,cAPJ,SAOI,MAAA,eAPJ,kBAOI,UAAA,+BAPJ,oBAOI,UAAA,2BAPJ,oBAOI,UAAA,2BAPJ,QAOI,OAAA,IAAA,MAAA,kBAPJ,UAOI,OAAA,YAPJ,YAOI,WAAA,IAAA,MAAA,kBAPJ,cAOI,WAAA,YAPJ,YAOI,aAAA,IAAA,MAAA,kBAPJ,cAOI,aAAA,YAPJ,eAOI,cAAA,IAAA,MAAA,kBAPJ,iBAOI,cAAA,YAPJ,cAOI,YAAA,IAAA,MAAA,kBAPJ,gBAOI,YAAA,YAPJ,gBAOI,aAAA,kBAPJ,kBAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,eAOI,aAAA,kBAPJ,cAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,cAOI,aAAA,eAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,OAOI,MAAA,eAPJ,QAOI,MAAA,eAPJ,QAOI,UAAA,eAPJ,QAOI,MAAA,gBAPJ,YAOI,UAAA,gBAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,OAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,QAOI,WAAA,eAPJ,QAOI,OAAA,gBAPJ,YAOI,WAAA,gBAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,OAOI,IAAA,YAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,gBAPJ,OAOI,IAAA,eAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,eAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,gBAOI,YAAA,mCAPJ,MAOI,UAAA,iCAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,8BAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,eAPJ,YAOI,WAAA,iBAPJ,YAOI,WAAA,iBAPJ,UAOI,YAAA,cAPJ,YAOI,YAAA,kBAPJ,WAOI,YAAA,cAPJ,SAOI,YAAA,cAPJ,WAOI,YAAA,iBAPJ,MAOI,YAAA,YAPJ,OAOI,YAAA,eAPJ,SAOI,YAAA,cAPJ,OAOI,YAAA,YAPJ,YAOI,WAAA,eAPJ,UAOI,WAAA,gBAPJ,aAOI,WAAA,iBAPJ,sBAOI,gBAAA,eAPJ,2BAOI,gBAAA,oBAPJ,8BAOI,gBAAA,uBAPJ,gBAOI,eAAA,oBAPJ,gBAOI,eAAA,oBAPJ,iBAOI,eAAA,qBAPJ,WAOI,YAAA,iBAPJ,aAOI,YAAA,iBAPJ,YAOI,UAAA,qBAAA,WAAA,qBAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,gBAIQ,kBAAA,EAGJ,MAAA,+DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,aAIQ,kBAAA,EAGJ,MAAA,4DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAPJ,eAIQ,kBAAA,EAGJ,MAAA,yBAPJ,eAIQ,kBAAA,EAGJ,MAAA,+BAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAjBJ,iBACE,kBAAA,KADF,iBACE,kBAAA,IADF,iBACE,kBAAA,KADF,kBACE,kBAAA,EASF,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,cAIQ,gBAAA,EAGJ,iBAAA,6DAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,WAIQ,gBAAA,EAGJ,iBAAA,0DAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,gBAIQ,gBAAA,EAGJ,iBAAA,sBAjBJ,eACE,gBAAA,IADF,eACE,gBAAA,KADF,eACE,gBAAA,IADF,eACE,gBAAA,KADF,gBACE,gBAAA,EASF,aAOI,iBAAA,6BAPJ,iBAOI,oBAAA,cAAA,iBAAA,cAAA,YAAA,cAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,iBAPJ,WAOI,cAAA,YAPJ,WAOI,cAAA,gBAPJ,WAOI,cAAA,iBAPJ,WAOI,cAAA,gBAPJ,gBAOI,cAAA,cAPJ,cAOI,cAAA,gBAPJ,aAOI,uBAAA,iBAAA,wBAAA,iBAPJ,aAOI,wBAAA,iBAAA,2BAAA,iBAPJ,gBAOI,2BAAA,iBAAA,0BAAA,iBAPJ,eAOI,0BAAA,iBAAA,uBAAA,iBAPJ,SAOI,WAAA,kBAPJ,WAOI,WAAA,iBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,iBAOI,MAAA,eAPJ,eAOI,MAAA,gBAPJ,gBAOI,MAAA,eAPJ,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,WAOI,IAAA,YAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,gBAPJ,WAOI,IAAA,eAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,eAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,gBAOI,WAAA,eAPJ,cAOI,WAAA,gBAPJ,iBAOI,WAAA,kBCnDZ,0BD4CQ,MAOI,UAAA,iBAPJ,MAOI,UAAA,eAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,kBChCZ,aDyBQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` + + + + + + + + + + + + + + + + @if (!_asp.GetAuthenticationStateAsync().Result.User.Identity.IsAuthenticated) + { +

+ } + + +@code +{ + private string? currentUrl; + + string InspectionDescription { get; set; } + + eInspectorType InspectorType { get; set; } + + async Task GetInspectorType() + { + return (eInspectorType)await Component._inspectorType.GetAsync(); + } + + protected override async Task OnInitializedAsync() + { + currentUrl = NavigationManager.ToBaseRelativePath(NavigationManager.Uri); + NavigationManager.LocationChanged += OnLocationChanged; + + InspectionDescription = await Component._inspectionDetails.GetAsync(CultureInfo.CurrentCulture); + InspectorType = await GetInspectorType(); + return base.OnInitializedAsync(); + } + + private void OnLocationChanged(object? sender, LocationChangedEventArgs e) + { + currentUrl = NavigationManager.ToBaseRelativePath(e.Location); + StateHasChanged(); + } +} diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/AxoInspectorDialog/AxoInspectorDialogDialogView.razor.cs b/src/inspectors/src/AXOpen.Inspectors.blazor/AxoInspectorDialog/AxoInspectorDialogDialogView.razor.cs new file mode 100644 index 000000000..35658b9b5 --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/AxoInspectorDialog/AxoInspectorDialogDialogView.razor.cs @@ -0,0 +1,109 @@ +using AXOpen.Core; +using AXOpen.Core.Blazor.AxoDialogs; +using AXOpen.Logging; +using AXSharp.Connector; +using Pocos.AXOpen.Inspectors; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using AXSharp.Connector.Localizations; + +namespace AXOpen.Inspectors +{ + public partial class AxoInspectorDialogDialogView : AxoDialogBaseView, IDisposable + { + + public bool RetryDisabled { get; set; } = false; + + protected override void OnAfterRender(bool firstRender) + { + _inspector = null; + try + { + // _inspectorIndentity property is subscribed in the method base.ConfigurePolling() + var parent = Component.GetParent(); + + if (parent != null) + { + if (parent is AxoInspector i) + { + _inspector = i; + } + } + } + catch (Exception) + { + } + + if (base.Component._isOverInspected.Cyclic) + RetryDisabled = true; + } + + public override void ConfigurePolling() + { + StartPolling(this.Component, 250); + } + + public async Task Retry() + { + if (base.Component != null && !base.Component._isOverInspected.Cyclic) + { + RetryDisabled = false; + base.Component._dialogueRetry.Edit = true; + await base.CloseDialogsWithSignalR(); + var identity = (await _asp.GetAuthenticationStateAsync()).User.Identity; + AxoApplication.Current.Logger.Information($"{nameof(Retry)} of '{Component.HumanReadable}' was executed.", identity); + } + else + { + RetryDisabled = true; + } + + } + public async Task Terminate() + { + base.Component._dialogueTerminate.Edit = true; + await base.CloseDialogsWithSignalR(); + var identity = (await _asp.GetAuthenticationStateAsync()).User.Identity; + AxoApplication.Current.Logger.Information($"{nameof(Terminate)} of '{Component.HumanReadable}' was executed.", identity); + } + public async Task Override() + { + base.Component._dialogueOverride.Edit = true; + await base.CloseDialogsWithSignalR(); + var identity = (await _asp.GetAuthenticationStateAsync()).User.Identity; + AxoApplication.Current.Logger.Information($"{nameof(Override)} of '{Component.HumanReadable}' was executed.", identity); + } + + + public string Description + { + get => string.IsNullOrEmpty(base.Component.AttributeName) ? base.Component.GetSymbolTail() : base.Component.GetAttributeName(CultureInfo.CurrentUICulture); + + } + + private ITwinObject _inspector; + public ITwinObject Inspector + { + get + { + + return _inspector; + } + + } + + + + public override void Dispose() + { + base.Dispose(); + } + + } + +} diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/GenericIconView.razor b/src/inspectors/src/AXOpen.Inspectors.blazor/GenericIconView.razor new file mode 100644 index 000000000..b00f6592a --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/GenericIconView.razor @@ -0,0 +1,69 @@ +@namespace AXOpen.Inspectors + +
+ @switch (@Result) + { + case 0: + + break; + case 10: + + break; + case 20: + + break; + case 30: + + break; + case 35: + + break; + case 40: + + break; + case 50: + + break; + } + + @if (HasLabel) + { +
+ @switch (@Result) + { + case 0: +

@Localizer["NoAction"]

+ break; + case 10: +

@Localizer["Running"]

+ break; + case 20: +

@Localizer["Passed"]

+ break; + case 30: +

@Localizer["Failed"]

+ break; + case 35: +

@Localizer["Inconclusive"]

+ break; + case 40: +

@Localizer["Excluded"]

+ break; + case 50: +

@Localizer["Bypassed"]

+ break; + } +
+ } +
+ +@code { + [Parameter] + public short Result { get; set; } + + [Parameter] + public bool HasLabel { get; set; } = true; + + [Parameter] + public string Class { get; set; } +} \ No newline at end of file diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/GenericInspectorDataView.razor b/src/inspectors/src/AXOpen.Inspectors.blazor/GenericInspectorDataView.razor new file mode 100644 index 000000000..2c7e62f99 --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/GenericInspectorDataView.razor @@ -0,0 +1,54 @@ +@namespace AXOpen.Inspectors + +
+
+ @if (Presentation != "ShadowControl") + { + @if (Presentation == "ShadowDisplay") + { + + } + else + { + + } + } + + + +
+
+ @if (Presentation != "ShadowControl") + { + @if (Presentation == "ShadowDisplay") + { + + } + else + { + + } + } + + + + @if (Presentation != "ShadowControl") + { + @if (Presentation == "ShadowDisplay") + { + + } + else + { + + } + } +
+
+ +@code { + [Parameter] + public AxoInspectorData Data { get; set; } + [Parameter] + public string Presentation { get; set; } +} \ No newline at end of file diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/InspectorViewTemplate.razor b/src/inspectors/src/AXOpen.Inspectors.blazor/InspectorViewTemplate.razor new file mode 100644 index 000000000..81038df6f --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/InspectorViewTemplate.razor @@ -0,0 +1,154 @@ +@namespace AXOpen.Inspectors +@using Operon.Components.Accordion +@inherits RenderableComponentBase; + +
+
+ + + @if (IsOverInspected()) + { +

@Localizer["OverInspectionDetected"]

+ } + + @if (_accordionOpen) + { +
+ +
+
+ + +
+ + +
+
+ } +
+
+ +@code { + [Parameter] + public AxoInspectorData Data { get; set; } + + [Parameter] + public string Presentation { get; set; } + + + private string _name; + [Parameter] + public string Name + { + get + { + return this._name == this.Data.GetSymbolTail() ? string.Empty : this._name; + } + + set + { + this._name = value; + } + } + + private string NameWithUnit => string.IsNullOrEmpty(this.Data?.Units) || this.Data?.Units == this.Data?.GetSymbolTail() ? this.Name : $"{Name} [{this.Data.Units}]"; + + + private short Result + { + get + { + return ((Presentation == "Control") || (Presentation == "Display")) ? Data.Result.Cyclic : Data.Result.Shadow; + } + } + + private bool _accordionOpen { get; set; } = false; + + private bool IsAnalogInspectorData() => Data is AxoAnalogueInspectorData ? true : false; + private bool IsDigitalInspectorData() => Data is AxoDigitalInspectorData ? true : false; + private bool IsDataInspectorData() => Data is AxoDataInspectorData ? true : false; + + private string GetStateClass() => ((eInspectorResult)Result) switch + { + eInspectorResult.NoAction => "flux-inspector--noaction", + eInspectorResult.Running => "flux-inspector--running", + eInspectorResult.Passed => "flux-inspector--passed", + eInspectorResult.Failed => "flux-inspector--failed", + eInspectorResult.Inconclusive => "flux-inspector--inconclusive", + eInspectorResult.Excluded => "flux-inspector--excluded", + eInspectorResult.Bypassed => "flux-inspector--bypassed", + _ => "" + }; + + private bool IsOverInspected() + { + if (Presentation.Contains("Shadow")) + { + return (Data.NumberOfAllowedRetries.Shadow > 0) && (Data.NumberOfAllowedRetries.Shadow < Data.RetryAttemptsCount.Shadow); + } + // other case is online + return (Data.NumberOfAllowedRetries.Cyclic > 0) && (Data.NumberOfAllowedRetries.Cyclic < Data.RetryAttemptsCount.Cyclic); ; + } + + public override void ConfigurePolling() + { + if (!((Presentation == "Control") || (Presentation == "Display"))) + return; + + if (Data is AxoAnalogueInspectorData) + { + var d = Data as AxoAnalogueInspectorData; + + this.StartPolling(d.Result); + this.StartPolling(d.RequiredMin); + this.StartPolling(d.DetectedStatus); + this.StartPolling(d.RequiredMax); + } + else if (Data is AxoDigitalInspectorData) + { + var d = Data as AxoDigitalInspectorData; + + this.StartPolling(d.Result); + this.StartPolling(d.DetectedStatus); + this.StartPolling(d.RequiredStatus); + } + else if (Data is AxoDataInspectorData) + { + var d = Data as AxoDataInspectorData; + + this.StartPolling(d.Result); + this.StartPolling(d.DetectedStatus); + this.StartPolling(d.RequiredStatus); + this.StartPolling(d.StarNotationEnabled); + } + } +} diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/Properties/AssemblyInfo.cs b/src/inspectors/src/AXOpen.Inspectors.blazor/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..7fc953296 --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using AXSharp.Presentation.Blazor.Attributes; + +[assembly: RenderableBlazorAssembly()] \ No newline at end of file diff --git a/src/inspectors/src/AXOpen.Inspectors.blazor/_Imports.razor b/src/inspectors/src/AXOpen.Inspectors.blazor/_Imports.razor new file mode 100644 index 000000000..3495f4a93 --- /dev/null +++ b/src/inspectors/src/AXOpen.Inspectors.blazor/_Imports.razor @@ -0,0 +1,7 @@ +@using Microsoft.AspNetCore.Components.Web +@using AXSharp.Presentation.Blazor.Controls.RenderableContent +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.Extensions.Localization +@using AXOpen.Inspectors.Resources + +@inject IStringLocalizer Localizer \ No newline at end of file From 69888c9e2384c07a0c3c11637ae8900ed2e52ad1 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:19:58 +0100 Subject: [PATCH 03/30] wip --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..37441beed --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "files.eol": "\n" +} \ No newline at end of file From c9dbcd06985dd5ad099524fb8ab8332cb2f9f7a7 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:26:48 +0100 Subject: [PATCH 04/30] wip --- .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ .../wwwroot/css/operon-variables.css | 610 +++++------ src/styling/src/package-lock.json | 991 ++++++++++++++++++ src/styling/src/wwwroot/css/momentum.css | 2 +- .../src/wwwroot/css/operon-variables.css | 610 +++++------ 32 files changed, 10142 insertions(+), 9151 deletions(-) create mode 100644 src/styling/src/package-lock.json diff --git a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css +++ b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css +++ b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css +++ b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css +++ b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css +++ b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/styling/src/package-lock.json b/src/styling/src/package-lock.json new file mode 100644 index 000000000..00679bba0 --- /dev/null +++ b/src/styling/src/package-lock.json @@ -0,0 +1,991 @@ +{ + "name": "src", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@tailwindcss/cli": "^4.1.17", + "tailwindcss": "^4.1.17" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@tailwindcss/cli": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/cli/-/cli-4.1.18.tgz", + "integrity": "sha512-sMZ+lZbDyxwjD2E0L7oRUjJ01Ffjtme5OtjvvnC+cV4CEDcbqzbp25TCpxHj6kWLU9+DlqJOiNgSOgctC2aZmg==", + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.1", + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "enhanced-resolve": "^5.18.3", + "mri": "^1.2.0", + "picocolors": "^1.1.1", + "tailwindcss": "4.1.18" + }, + "bin": { + "tailwindcss": "dist/index.mjs" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + } + } +} diff --git a/src/styling/src/wwwroot/css/momentum.css b/src/styling/src/wwwroot/css/momentum.css index dcd123c20..3ea272b68 100644 --- a/src/styling/src/wwwroot/css/momentum.css +++ b/src/styling/src/wwwroot/css/momentum.css @@ -1,2 +1,2 @@ -/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */ +/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-400:oklch(82.8% .189 84.429);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-lime-400:oklch(84.1% .238 128.85);--color-green-500:oklch(72.3% .219 149.579);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-400:oklch(74.6% .16 232.661);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-500:oklch(62.7% .265 303.9);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.-z-1{z-index:calc(1*-1)}.col-auto{grid-column:auto}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.\!m-0{margin:calc(var(--spacing)*0)!important}.m-0{margin:calc(var(--spacing)*0)}.m-1{margin:calc(var(--spacing)*1)}.m-2{margin:calc(var(--spacing)*2)}.m-4{margin:calc(var(--spacing)*4)}.-mx-2{margin-inline:calc(var(--spacing)*-2)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.my-3{margin-block:calc(var(--spacing)*3)}.my-auto{margin-block:auto}.ms-1{margin-inline-start:calc(var(--spacing)*1)}.ms-2{margin-inline-start:calc(var(--spacing)*2)}.ms-4{margin-inline-start:calc(var(--spacing)*4)}.ms-5{margin-inline-start:calc(var(--spacing)*5)}.ms-auto{margin-inline-start:auto}.me-1{margin-inline-end:calc(var(--spacing)*1)}.me-2{margin-inline-end:calc(var(--spacing)*2)}.me-4{margin-inline-end:calc(var(--spacing)*4)}.me-6{margin-inline-end:calc(var(--spacing)*6)}.me-auto{margin-inline-end:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.block{display:block}.flex{display:flex}.flex\!{display:flex!important}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-15{height:calc(var(--spacing)*15)}.h-auto{height:auto}.h-full{height:100%}.min-h-40{min-height:calc(var(--spacing)*40)}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing)*2)}.w-3{width:calc(var(--spacing)*3)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-50{width:calc(var(--spacing)*50)}.w-64{width:calc(var(--spacing)*64)}.w-75{width:calc(var(--spacing)*75)}.w-100{width:calc(var(--spacing)*100)}.w-125{width:calc(var(--spacing)*125)}.w-\[1px\]{width:1px}.w-auto{width:auto}.w-full{width:100%}.w-md{width:var(--container-md)}.max-w-200{max-width:calc(var(--spacing)*200)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-6{min-width:calc(var(--spacing)*6)}.min-w-20{min-width:calc(var(--spacing)*20)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\[10rem\]{min-width:10rem}.flex-1{flex:1}.flex-\[2\]{flex:2}.flex-shrink-0{flex-shrink:0}.flex-grow-1,.grow,.grow-1{flex-grow:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-none{animation:none}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fit\,minmax\(160px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-row\!{flex-direction:row!important}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-center\!{align-items:center!important}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing)*0)}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border,.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-solid{--tw-border-style:solid;border-style:solid}.border-blue-500\/50{border-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.border-blue-500\/50{border-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-current{border-color:currentColor}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab, red, red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500)50%,transparent)}}.border-orange-400\/50{border-color:#ff8b1a80}@supports (color:color-mix(in lab, red, red)){.border-orange-400\/50{border-color:color-mix(in oklab,var(--color-orange-400)50%,transparent)}}.border-red-500\/50{border-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.border-red-500\/50{border-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.border-slate-400\/35{border-color:#90a1b959}@supports (color:color-mix(in lab, red, red)){.border-slate-400\/35{border-color:color-mix(in oklab,var(--color-slate-400)35%,transparent)}}.border-slate-500\/40{border-color:#62748e66}@supports (color:color-mix(in lab, red, red)){.border-slate-500\/40{border-color:color-mix(in oklab,var(--color-slate-500)40%,transparent)}}.border-yellow-500\/50{border-color:#edb20080}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\/50{border-color:color-mix(in oklab,var(--color-yellow-500)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-green-500{background-color:var(--color-green-500)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-400\/20{background-color:#90a1b933}@supports (color:color-mix(in lab, red, red)){.bg-slate-400\/20{background-color:color-mix(in oklab,var(--color-slate-400)20%,transparent)}}.bg-slate-500{background-color:var(--color-slate-500)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-700\/40{background-color:#31415866}@supports (color:color-mix(in lab, red, red)){.bg-slate-700\/40{background-color:color-mix(in oklab,var(--color-slate-700)40%,transparent)}}.bg-slate-800\/60{background-color:#1d293d99}@supports (color:color-mix(in lab, red, red)){.bg-slate-800\/60{background-color:color-mix(in oklab,var(--color-slate-800)60%,transparent)}}.bg-slate-900\/35{background-color:#0f172b59}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/35{background-color:color-mix(in oklab,var(--color-slate-900)35%,transparent)}}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-green-500{--tw-gradient-from:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-red-500{--tw-gradient-from:var(--color-red-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-yellow-400{--tw-gradient-from:var(--color-yellow-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-0\%{--tw-gradient-from-position:0%}.via-amber-400{--tw-gradient-via:var(--color-amber-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-cyan-500{--tw-gradient-via:var(--color-cyan-500);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-lime-400{--tw-gradient-via:var(--color-lime-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-purple-500{--tw-gradient-via:var(--color-purple-500);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-sky-400{--tw-gradient-via:var(--color-sky-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-yellow-400{--tw-gradient-via:var(--color-yellow-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-blue-500{--tw-gradient-to:var(--color-blue-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-500{--tw-gradient-to:var(--color-green-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-50\%{--tw-gradient-to-position:50%}.\!p-0{padding:calc(var(--spacing)*0)!important}.p-0{padding:calc(var(--spacing)*0)}.p-0\!{padding:calc(var(--spacing)*0)!important}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\!{padding-inline:calc(var(--spacing)*1)!important}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0{padding-block:calc(var(--spacing)*0)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\!{padding-block:calc(var(--spacing)*2)!important}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-3{padding-inline-start:calc(var(--spacing)*3)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.95rem\]{font-size:.95rem}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-nowrap{text-wrap:nowrap}.text-blue-500{color:var(--color-blue-500)}.text-gray-100{color:var(--color-gray-100)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-inherit{color:inherit}.text-inherit\!{color:inherit!important}.text-orange-500{color:var(--color-orange-500)}.text-red-500{color:var(--color-red-500)}.text-slate-100\/95{color:#f1f5f9f2}@supports (color:color-mix(in lab, red, red)){.text-slate-100\/95{color:color-mix(in oklab,var(--color-slate-100)95%,transparent)}}.text-slate-400{color:var(--color-slate-400)}.text-slate-400\/90{color:#90a1b9e6}@supports (color:color-mix(in lab, red, red)){.text-slate-400\/90{color:color-mix(in oklab,var(--color-slate-400)90%,transparent)}}.text-slate-900\/70{color:#0f172bb3}@supports (color:color-mix(in lab, red, red)){.text-slate-900\/70{color:color-mix(in oklab,var(--color-slate-900)70%,transparent)}}.text-slate-900\/85{color:#0f172bd9}@supports (color:color-mix(in lab, red, red)){.text-slate-900\/85{color:color-mix(in oklab,var(--color-slate-900)85%,transparent)}}.text-slate-900\/90{color:#0f172be6}@supports (color:color-mix(in lab, red, red)){.text-slate-900\/90{color:color-mix(in oklab,var(--color-slate-900)90%,transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.uppercase{text-transform:uppercase}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(34\,197\,94\,0\.6\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#22c55e99);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-blue-500\/50{--tw-shadow-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.shadow-blue-500\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-blue-500)50%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-green-500\/50{--tw-shadow-color:#00c75880}@supports (color:color-mix(in lab, red, red)){.shadow-green-500\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-green-500)50%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-orange-400\/40{--tw-shadow-color:#ff8b1a66}@supports (color:color-mix(in lab, red, red)){.shadow-orange-400\/40{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-orange-400)40%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-red-500\/50{--tw-shadow-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.shadow-red-500\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-red-500)50%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-yellow-500\/50{--tw-shadow-color:#edb20080}@supports (color:color-mix(in lab, red, red)){.shadow-yellow-500\/50{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-yellow-500)50%,transparent)var(--tw-shadow-alpha),transparent)}}.blur-\[1px\]{--tw-blur:blur(1px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}.\[assembly\:InternalsVisibleTo\(\"axopen\.inspectors_tests\"\)\]{assembly:InternalsVisibleTo("axopen.inspectors tests")}.\[assembly\:InternalsVisibleTo\(\"axopen_core_tests\"\)\]{assembly:InternalsVisibleTo("axopen core tests")}.\[assembly\:InternalsVisibleTo\(\"axopen_core_tests_L1\"\)\]{assembly:InternalsVisibleTo("axopen core tests L1")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsabbrobotics_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsabbrobotics tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsballuffidentification_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsballuffidentification tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentscognexvision_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentscognexvision tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsdesouttertightening_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsdesouttertightening tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsdrives_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsdrives tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsfestodrives_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsfestodrives tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentskeyencevision_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentskeyencevision tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentskukarobotics_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentskukarobotics tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsmitsubishirobotics_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsmitsubishirobotics tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsrexrothdrives_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsrexrothdrives tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsrexrothpress_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsrexrothpress tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsrobotics_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsrobotics tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentssiemidentification_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentssiemidentification tests")}.\[assembly\:InternalsVisibleTo\(\"axopencomponentsurrobotics_tests\"\)\]{assembly:InternalsVisibleTo("axopencomponentsurrobotics tests")}.\[assembly\:InternalsVisibleTo\(\"axopenio_tests\"\)\]{assembly:InternalsVisibleTo("axopenio tests")}.\[assembly\:InternalsVisibleTo\(\"components\.dukane\.welders_tests\"\)\]{assembly:InternalsVisibleTo("components.dukane.welders tests")}.\[assembly\:InternalsVisibleTo\(\"components\.rexroth\.tightening_tests\"\)\]{assembly:InternalsVisibleTo("components.rexroth.tightening tests")}.\[assembly\:InternalsVisibleTo\(\"components\.siem\.communication_tests\"\)\]{assembly:InternalsVisibleTo("components.siem.communication tests")}.\[assembly\:InternalsVisibleTo\(\"components\.zebra\.vision_tests\"\)\]{assembly:InternalsVisibleTo("components.zebra.vision tests")}.\[assembly\:InternalsVisibleTo\(\"elementscomponents_tests\"\)\]{assembly:InternalsVisibleTo("elementscomponents tests")}.\[assembly\:InternalsVisibleTo\(\"librarytemplate_tests\"\)\]{assembly:InternalsVisibleTo("librarytemplate tests")}.\[assembly\:InternalsVisibleTo\(\"pneumaticcomponents_tests\"\)\]{assembly:InternalsVisibleTo("pneumaticcomponents tests")}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}}@media (min-width:48rem){.md\:block{display:block}.md\:hidden\!{display:none!important}.md\:w-64{width:calc(var(--spacing)*64)}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} \ No newline at end of file diff --git a/src/styling/src/wwwroot/css/operon-variables.css b/src/styling/src/wwwroot/css/operon-variables.css index 0b264bf52..9b1f8b4d6 100644 --- a/src/styling/src/wwwroot/css/operon-variables.css +++ b/src/styling/src/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} From 927d29072e53fdaf096bffb1d09de53ec94ce70c Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 15:58:45 +0100 Subject: [PATCH 05/30] yml line endings --- src/abstractions/app/apax.yml | 428 ++++++++--------- src/components.abb.robotics/app/apax.yml | 428 ++++++++--------- src/components.abstractions/app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- src/components.cognex.vision/app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- src/components.drives/app/apax.yml | 428 ++++++++--------- src/components.dukane.welders/app/apax.yml | 428 ++++++++--------- src/components.elements/app/apax.yml | 428 ++++++++--------- src/components.festo.drives/app/apax.yml | 428 ++++++++--------- src/components.keyence.vision/app/apax.yml | 428 ++++++++--------- src/components.kuka.robotics/app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- src/components.pneumatics/app/apax.yml | 428 ++++++++--------- src/components.rexroth.drives/app/apax.yml | 428 ++++++++--------- src/components.rexroth.press/app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- src/components.robotics/app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- .../app/apax.yml | 428 ++++++++--------- src/components.ur.robotics/app/apax.yml | 428 ++++++++--------- src/components.zebra.vision/app/apax.yml | 428 ++++++++--------- src/core/app/apax.yml | 428 ++++++++--------- src/data/app/apax.yml | 428 ++++++++--------- .../tests/AXOpen.Data.Tests_L1/ax/apax.yml | 428 ++++++++--------- .../ax/apax.yml | 426 ++++++++--------- src/inspectors/app/apax.yml | 428 ++++++++--------- src/integrations/app/apax.yml | 432 +++++++++--------- src/io/app/apax.yml | 430 ++++++++--------- src/probers/app/apax.yml | 428 ++++++++--------- src/simatic1500/app/apax.yml | 428 ++++++++--------- src/template.axolibrary/app/apax.yml | 428 ++++++++--------- src/timers/app/apax.yml | 428 ++++++++--------- src/utils/app/apax.yml | 430 ++++++++--------- 34 files changed, 7279 insertions(+), 7279 deletions(-) diff --git a/src/abstractions/app/apax.yml b/src/abstractions/app/apax.yml index c2a98b142..517011354 100644 --- a/src/abstractions/app/apax.yml +++ b/src/abstractions/app/apax.yml @@ -1,214 +1,214 @@ -name: "abstractions-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Abstractions" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.core": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "abstractions-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Abstractions" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.core": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.abb.robotics/app/apax.yml b/src/components.abb.robotics/app/apax.yml index 63c8ab41f..ff35edf0e 100644 --- a/src/components.abb.robotics/app/apax.yml +++ b/src/components.abb.robotics/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.abb.robotics" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - # - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Abb.Robotics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.abb.robotics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.abb.robotics" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + # - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Abb.Robotics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.abb.robotics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.abstractions/app/apax.yml b/src/components.abstractions/app/apax.yml index e80a17603..6bddc5cdc 100644 --- a/src/components.abstractions/app/apax.yml +++ b/src/components.abstractions/app/apax.yml @@ -1,214 +1,214 @@ -name: "components.abstractions-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Abstractions" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.abstractions": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "components.abstractions-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Abstractions" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.abstractions": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.balluff.identification/app/apax.yml b/src/components.balluff.identification/app/apax.yml index c234f6a97..7978bae7d 100644 --- a/src/components.balluff.identification/app/apax.yml +++ b/src/components.balluff.identification/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.balluff.identification" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Balluff.Identification" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.balluff.identification": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.balluff.identification" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Balluff.Identification" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.balluff.identification": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.cognex.vision/app/apax.yml b/src/components.cognex.vision/app/apax.yml index c842c00c3..118067642 100644 --- a/src/components.cognex.vision/app/apax.yml +++ b/src/components.cognex.vision/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.cognex.vision" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Cognex.Vision" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.cognex.vision": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.cognex.vision" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Cognex.Vision" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.cognex.vision": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.desoutter.tightening/app/apax.yml b/src/components.desoutter.tightening/app/apax.yml index 1249b7ebc..e037ea932 100644 --- a/src/components.desoutter.tightening/app/apax.yml +++ b/src/components.desoutter.tightening/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.desoutter.tightening" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Desoutter.Tightening" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.desoutter.tightening": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.desoutter.tightening" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Desoutter.Tightening" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.desoutter.tightening": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.drives/app/apax.yml b/src/components.drives/app/apax.yml index f55d1e8a8..530d0e793 100644 --- a/src/components.drives/app/apax.yml +++ b/src/components.drives/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.drives" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Drives" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.drives": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.drives" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Drives" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.drives": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.dukane.welders/app/apax.yml b/src/components.dukane.welders/app/apax.yml index 8108f5f31..535e89100 100644 --- a/src/components.dukane.welders/app/apax.yml +++ b/src/components.dukane.welders/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.dukane.welders" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - # - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Dukane.Welders" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.dukane.welders": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.dukane.welders" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + # - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Dukane.Welders" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.dukane.welders": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.elements/app/apax.yml b/src/components.elements/app/apax.yml index 0fe43f155..27c03e844 100644 --- a/src/components.elements/app/apax.yml +++ b/src/components.elements/app/apax.yml @@ -1,214 +1,214 @@ -name: "elementscomponents" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - # - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Elements" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.elements": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "elementscomponents" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + # - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Elements" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.elements": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.festo.drives/app/apax.yml b/src/components.festo.drives/app/apax.yml index 69430a010..54907c024 100644 --- a/src/components.festo.drives/app/apax.yml +++ b/src/components.festo.drives/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.festo.drives" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Festo.Drives" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.festo.drives": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.festo.drives" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Festo.Drives" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.festo.drives": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.keyence.vision/app/apax.yml b/src/components.keyence.vision/app/apax.yml index 645babf2c..4fe4042c4 100644 --- a/src/components.keyence.vision/app/apax.yml +++ b/src/components.keyence.vision/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.keyence.vision" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Keyence.Vision" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.keyence.vision": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.keyence.vision" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Keyence.Vision" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.keyence.vision": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.kuka.robotics/app/apax.yml b/src/components.kuka.robotics/app/apax.yml index bc6637bef..6a84bc454 100644 --- a/src/components.kuka.robotics/app/apax.yml +++ b/src/components.kuka.robotics/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.kuka.robotics" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - # - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Kuka.Robotics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.kuka.robotics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.kuka.robotics" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + # - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Kuka.Robotics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.kuka.robotics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.mitsubishi.robotics/app/apax.yml b/src/components.mitsubishi.robotics/app/apax.yml index 48446eb18..2ff590628 100644 --- a/src/components.mitsubishi.robotics/app/apax.yml +++ b/src/components.mitsubishi.robotics/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.mitsubishi.robotics" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Mitsubishi.Robotics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.mitsubishi.robotics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.mitsubishi.robotics" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Mitsubishi.Robotics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.mitsubishi.robotics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.pneumatics/app/apax.yml b/src/components.pneumatics/app/apax.yml index 14ac6adb0..1f321f11f 100644 --- a/src/components.pneumatics/app/apax.yml +++ b/src/components.pneumatics/app/apax.yml @@ -1,214 +1,214 @@ -name: "pneumaticcomponents" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Pneumatics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.pneumatics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "pneumaticcomponents" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Pneumatics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.pneumatics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.rexroth.drives/app/apax.yml b/src/components.rexroth.drives/app/apax.yml index e75833593..6e39ce80d 100644 --- a/src/components.rexroth.drives/app/apax.yml +++ b/src/components.rexroth.drives/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.rexroth.drives" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Drives" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.rexroth.drives": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.rexroth.drives" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Drives" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.rexroth.drives": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.rexroth.press/app/apax.yml b/src/components.rexroth.press/app/apax.yml index 18886d327..be0bac678 100644 --- a/src/components.rexroth.press/app/apax.yml +++ b/src/components.rexroth.press/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.rexroth.press" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Press" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.rexroth.press": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.rexroth.press" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Press" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.rexroth.press": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.rexroth.tightening/app/apax.yml b/src/components.rexroth.tightening/app/apax.yml index 9ffb4dea2..4af8f23cd 100644 --- a/src/components.rexroth.tightening/app/apax.yml +++ b/src/components.rexroth.tightening/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.rexroth.tightening" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Tightening" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.rexroth.tightening": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.rexroth.tightening" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Rexroth.Tightening" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.rexroth.tightening": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.robotics/app/apax.yml b/src/components.robotics/app/apax.yml index f1e973a08..86fe6984d 100644 --- a/src/components.robotics/app/apax.yml +++ b/src/components.robotics/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.robotics" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Robotics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.robotics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.robotics" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Robotics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.robotics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.siem.communication/app/apax.yml b/src/components.siem.communication/app/apax.yml index 969e33dd3..74a8c5937 100644 --- a/src/components.siem.communication/app/apax.yml +++ b/src/components.siem.communication/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.siem.communication" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Siem.Communication" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.siem.communication": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.siem.communication" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Siem.Communication" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.siem.communication": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.siem.identification/app/apax.yml b/src/components.siem.identification/app/apax.yml index 6e6b3ea68..9e1e8d982 100644 --- a/src/components.siem.identification/app/apax.yml +++ b/src/components.siem.identification/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.siem.identification" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Siem.Identification" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.siem.identification": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.siem.identification" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Siem.Identification" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.siem.identification": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.ur.robotics/app/apax.yml b/src/components.ur.robotics/app/apax.yml index 2706f8956..9474d0707 100644 --- a/src/components.ur.robotics/app/apax.yml +++ b/src/components.ur.robotics/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.ur.robotics" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Ur.Robotics" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.ur.robotics": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.ur.robotics" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Ur.Robotics" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.ur.robotics": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/components.zebra.vision/app/apax.yml b/src/components.zebra.vision/app/apax.yml index 8cbb0b6fb..2592106dc 100644 --- a/src/components.zebra.vision/app/apax.yml +++ b/src/components.zebra.vision/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_axopen.components.zebra.vision" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Components.Zebra.Vision" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.zebra.vision": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.components.zebra.vision" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Components.Zebra.Vision" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.zebra.vision": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/core/app/apax.yml b/src/core/app/apax.yml index 55e169b8e..a281027c7 100644 --- a/src/core/app/apax.yml +++ b/src/core/app/apax.yml @@ -1,214 +1,214 @@ -name: "ix_axopencore" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Core" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.core": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "ix_axopencore" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Core" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.core": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/data/app/apax.yml b/src/data/app/apax.yml index 0fb40be4c..850a9ca45 100644 --- a/src/data/app/apax.yml +++ b/src/data/app/apax.yml @@ -1,214 +1,214 @@ -name: "axopen.data-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Data" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.data": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "axopen.data-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Data" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.data": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ax/apax.yml b/src/data/tests/AXOpen.Data.Tests_L1/ax/apax.yml index f33d972c1..2e0ffba7e 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ax/apax.yml +++ b/src/data/tests/AXOpen.Data.Tests_L1/ax/apax.yml @@ -1,214 +1,214 @@ -name: "axopen.data.tests_l1" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Data" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.data": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "axopen.data.tests_l1" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Data" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.data": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/data/tests/AXOpen.Repository.Integration.Tests_L4/ax/apax.yml b/src/data/tests/AXOpen.Repository.Integration.Tests_L4/ax/apax.yml index 3a654706e..6bd83093e 100644 --- a/src/data/tests/AXOpen.Repository.Integration.Tests_L4/ax/apax.yml +++ b/src/data/tests/AXOpen.Repository.Integration.Tests_L4/ax/apax.yml @@ -1,213 +1,213 @@ -name: "axopen.integration.tests_l4" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Data" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.data": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "axopen.integration.tests_l4" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Data" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.data": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/inspectors/app/apax.yml b/src/inspectors/app/apax.yml index d5fe65426..20302486a 100644 --- a/src/inspectors/app/apax.yml +++ b/src/inspectors/app/apax.yml @@ -1,214 +1,214 @@ -name: "axopen.inspectors" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Inspectors" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.inspectors": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "axopen.inspectors" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Inspectors" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.inspectors": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/integrations/app/apax.yml b/src/integrations/app/apax.yml index 4b8d10b6f..f46c2146f 100644 --- a/src/integrations/app/apax.yml +++ b/src/integrations/app/apax.yml @@ -1,216 +1,216 @@ -name: "axopen.integrations" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Integrations" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.components.abstractions": '0.0.0-dev.0' - "@inxton/axopen.data": '0.0.0-dev.0' - "@inxton/axopen.probers": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "axopen.integrations" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Integrations" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.components.abstractions": '0.0.0-dev.0' + "@inxton/axopen.data": '0.0.0-dev.0' + "@inxton/axopen.probers": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/io/app/apax.yml b/src/io/app/apax.yml index c63d2a030..849183e80 100644 --- a/src/io/app/apax.yml +++ b/src/io/app/apax.yml @@ -1,215 +1,215 @@ -name: "app_axopen.io" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Io" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - # USE_PLC_SIM_ADVANCED: "true" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.io": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_axopen.io" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Io" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + # USE_PLC_SIM_ADVANCED: "true" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.io": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/probers/app/apax.yml b/src/probers/app/apax.yml index 2a4ee2fa1..476f22f25 100644 --- a/src/probers/app/apax.yml +++ b/src/probers/app/apax.yml @@ -1,214 +1,214 @@ -name: "probers-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Probers" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.probers": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "probers-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Probers" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.probers": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/simatic1500/app/apax.yml b/src/simatic1500/app/apax.yml index 482a74614..2bcbf44c7 100644 --- a/src/simatic1500/app/apax.yml +++ b/src/simatic1500/app/apax.yml @@ -1,214 +1,214 @@ -name: "simatic1500-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Simatic1500" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' - "@inxton/axopen.core": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "simatic1500-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Simatic1500" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' + "@inxton/axopen.core": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/template.axolibrary/app/apax.yml b/src/template.axolibrary/app/apax.yml index 5a1b3dd04..e5b5628a3 100644 --- a/src/template.axolibrary/app/apax.yml +++ b/src/template.axolibrary/app/apax.yml @@ -1,214 +1,214 @@ -name: "app_apaxappname" -version: '0.0.0-dev.0' -type: app -targets: - - "1500" - # - llvm -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "Template.Axolibrary" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/apaxlibname": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "app_apaxappname" +version: '0.0.0-dev.0' +type: app +targets: + - "1500" + # - llvm +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "Template.Axolibrary" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/apaxlibname": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/timers/app/apax.yml b/src/timers/app/apax.yml index fab35b0c1..47a90fbbc 100644 --- a/src/timers/app/apax.yml +++ b/src/timers/app/apax.yml @@ -1,214 +1,214 @@ -name: "timers-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Timers" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.core": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "timers-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Timers" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.core": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" diff --git a/src/utils/app/apax.yml b/src/utils/app/apax.yml index 49f506d3f..181b538ad 100644 --- a/src/utils/app/apax.yml +++ b/src/utils/app/apax.yml @@ -1,215 +1,215 @@ -name: "utils-app" -version: '0.0.0-dev.0' -type: app -targets: - # - llvm - - "1500" -variables: - # APAX_BUILD_ARGS: - # - "--debug" # Generate debug information for target "1500" - # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => - PLC_NAME: "plc_line" - DEFAULT_NAMESPACE: "AXOpen.Utils" - AXTARGET: 192.168.100.120 - AXTARGETPLATFORMINPUT: .\bin\1500\ - AX_USERNAME: "admin" - AX_TARGET_PWD: "Qwerty123456+" - USE_PLC_SIM_ADVANCED: "true" - # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. -registries: - "@inxton": "https://npm.pkg.github.com/" -devDependencies: - "@inxton/ax-sdk": '0.0.0-dev.0' -dependencies: - "@inxton/axopen.utils": '0.0.0-dev.0' - "@inxton/axopen.core": '0.0.0-dev.0' - "@inxton/ax.axopen.app": '0.0.0-dev.0' - "@inxton/axopen.simatic1500": '0.0.0-dev.0' -installStrategy: strict -apaxVersion: 3.5.0 -scripts: - # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. - # Local variables can override environment variables. - # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. - # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) - # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses - # AX_USERNAME: Name of the PLC user used for WebAPI and HMI - # AXTARGET: IP address of the PLC - # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM - # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. - # AX_TARGET_PWD: Password for 'AX_USERNAME' - # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all - # PNIO_MAC: MAC address of the network adapter connected to the Profinet network - plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET - START=$(date +%s) - ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" - r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" - ixc: | # run ix builder - START=$(date +%s) - dotnet tool restore - dotnet ixc --skip-deps - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" - dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_list_interfaces.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" - dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) - START=$(date +%s) - ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" - hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" - ci: | #clean and install dependencies - START=$(date +%s) - apax clean - apax install - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" - reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) - START=$(date +%s) - ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" - clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) - START=$(date +%s) - ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" - gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) - START=$(date +%s) - ..\\..\\scripts\\copy_and_install_gsd.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" - hwl: | # copy all templates from libraries - START=$(date +%s) - ..\\..\\scripts\\copy_hwl_templates.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" - ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) - START=$(date +%s) - ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" - hwcc: | # compile hardware configuration (apax hwc compile) - START=$(date +%s) - ..\\..\\scripts\\hw_compile.sh - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" - hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates - START=$(date +%s) - ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" - hwadr: | # copy the generated IoAddresses - START=$(date +%s) - ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" - # the following command must be triggered only once - hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" - hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" - hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) - START=$(date +%s) - ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" - hwdo: | # download HW only using certificate (apax hwld [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" - swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" - swfdo: | # software full download only (apax sld load [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" - swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" - swddo: | # software delta download only (apax sld load --mode delta [using cert file]) - START=$(date +%s) - ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" - alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" - all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) - START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" - ib: | - START=$(date +%s) - apax install - apax build - dotnet ixc - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" - icb: | - START=$(date +%s) - apax install --catalog --strict - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" - cib: | - START=$(date +%s) - apax clean - apax ib - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" - cicb: | - START=$(date +%s) - apax clean - apax icb - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" - ibt: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax test - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" - gc: | - START=$(date +%s) - apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" - mm: | - apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously - x: | - apax swfd - apax mm - t: | - apax install - apax hwl - apax ssc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax build - dotnet ixc - - tt: | - START=$(date +%s) - apax install - apax hwl - apax gc - apax gsd - apax hwcc - apax hwid - apax hwadr - apax hwdo - apax build - dotnet ixc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" - ttx: | - START=$(date +%s) - apax install - apax build - dotnet ixc - apax gc - apax swfdo - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" +name: "utils-app" +version: '0.0.0-dev.0' +type: app +targets: + # - llvm + - "1500" +variables: + # APAX_BUILD_ARGS: + # - "--debug" # Generate debug information for target "1500" + # Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. => + PLC_NAME: "plc_line" + DEFAULT_NAMESPACE: "AXOpen.Utils" + AXTARGET: 192.168.100.120 + AXTARGETPLATFORMINPUT: .\bin\1500\ + AX_USERNAME: "admin" + AX_TARGET_PWD: "Qwerty123456+" + USE_PLC_SIM_ADVANCED: "true" + # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. +registries: + "@inxton": "https://npm.pkg.github.com/" +devDependencies: + "@inxton/ax-sdk": '0.0.0-dev.0' +dependencies: + "@inxton/axopen.utils": '0.0.0-dev.0' + "@inxton/axopen.core": '0.0.0-dev.0' + "@inxton/ax.axopen.app": '0.0.0-dev.0' + "@inxton/axopen.simatic1500": '0.0.0-dev.0' +installStrategy: strict +apaxVersion: 3.5.0 +scripts: + # For proper execution of these scripts, the following variables need to be defined as environment variables or local variables. + # Local variables can override environment variables. + # It is highly recommended NOT to store secrets such as 'AX_USERNAME' and 'AX_TARGET_PWD' in local variables. + # PLC_NAME: Name of the PLC (also equal to the PLC Profinet name) + # DEFAULT_NAMESPACE: Namespace used for HwId and IO addresses + # AX_USERNAME: Name of the PLC user used for WebAPI and HMI + # AXTARGET: IP address of the PLC + # AXTARGETPLATFORMINPUT: Folder of the compiled software to be downloaded to the PLC. Use the value ".\bin\1500\" for the S7-1500 controller, even if running inside PLCSIM + # AXTARGETPLCSIMINSTANCE: Name of the PLCSIM instance to start. The instance must already exist. + # AX_TARGET_PWD: Password for 'AX_USERNAME' + # USE_PLC_SIM_ADVANCED with value of "true" will automatically trigger PlcSimAdvanced when calling apax alf or apax all + # PNIO_MAC: MAC address of the network adapter connected to the Profinet network + plcsim: | # start the PlcSimAdvanced if installed and if $USE_PLC_SIM_ADVANCED = true, register instance name according to name of the project, set its IpAddress to the value of $AXTARGET + START=$(date +%s) + ..\\..\\scripts\\plcsimadvanced.sh $APAX_YML_NAME $PLC_NAME $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax plcsim' Finished in :" $(expr $(date +%s) - $START) "s" + r: | # restart PLC using certificates (apax plc-info set-mode STOP [using cert file] & apax plc-info set-mode RUN [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\restart_PLC.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax r' Finished in :" $(expr $(date +%s) - $START) "s" + ixc: | # run ix builder + START=$(date +%s) + dotnet tool restore + dotnet ixc --skip-deps + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ixc' Finished in :" $(expr $(date +%s) - $START) "s" + dcpli: | # list all interfaces, used to discover MAC address of the adapter connected to PLC (apax dcp-utility list-interfaces ) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_list_interfaces.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpli' Finished in :" $(expr $(date +%s) - $START) "s" + dcpd: | # discover all accesible devices connected to adapter with MAC address equal to entered MAC, used to discover MAC-addresses of the slaves (apax dcp-utility discover) + START=$(date +%s) + ..\\..\\scripts\\dcp_utility_discover.sh $PNIO_MAC + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax dcpd' Finished in :" $(expr $(date +%s) - $START) "s" + hdl: | #List configured harware and its state (apax hw-diag list [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_diag_list.sh $AXTARGET $PLC_NAME $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hdl' Finished in :" $(expr $(date +%s) - $START) "s" + ci: | #clean and install dependencies + START=$(date +%s) + apax clean + apax install + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ci' Finished in :" $(expr $(date +%s) - $START) "s" + reset_plc: | #total reset of the PLC including IP and name (apax hwld --reset-plc All) + START=$(date +%s) + ..\\..\\scripts\\reset_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax reset_plc' Finished in :" $(expr $(date +%s) - $START) "s" + clean_plc: | #total reset of the PLC excluding IP and name (apax hwld --reset-plc KeepOnlyIP) + START=$(date +%s) + ..\\..\\scripts\\clean_plc.sh $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax clean_plc' Finished in :" $(expr $(date +%s) - $START) "s" + gsd: | # copy and install all gsdml files from libraries (copy gsdml files from all assets dir & apax hwc install-gsd) + START=$(date +%s) + ..\\..\\scripts\\copy_and_install_gsd.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gsd' Finished in :" $(expr $(date +%s) - $START) "s" + hwl: | # copy all templates from libraries + START=$(date +%s) + ..\\..\\scripts\\copy_hwl_templates.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwl' Finished in :" $(expr $(date +%s) - $START) "s" + ssc: | # setup secure communication, create and import certificates, setup password for AX_USERNAME (create pkcs12ForCertificateImport.p12 & apax hwc setup-secure-communication & apax hwc import-certificate [TLS+Webserver] & apax hwc manage-users set-password) + START=$(date +%s) + ..\\..\\scripts\\setup_secure_communication.sh $PLC_NAME $AX_USERNAME $AX_TARGET_PWD $AXTARGET + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ssc' Finished in :" $(expr $(date +%s) - $START) "s" + hwcc: | # compile hardware configuration (apax hwc compile) + START=$(date +%s) + ..\\..\\scripts\\hw_compile.sh + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwcc' Finished in :" $(expr $(date +%s) - $START) "s" + hwid: | # copy the generated HwIds from global constants into the type definition, matching the format as the TIA2AX tool creates + START=$(date +%s) + ..\\..\\scripts\\copy_hardware_ids.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwid' Finished in :" $(expr $(date +%s) - $START) "s" + hwadr: | # copy the generated IoAddresses + START=$(date +%s) + ..\\..\\scripts\\copy_io_addresses.sh $DEFAULT_NAMESPACE $PLC_NAME + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwadr' Finished in :" $(expr $(date +%s) - $START) "s" + # the following command must be triggered only once + hwfd: | # copy and install gsd, copy templates,compile, copy the HwIds, copy the IoAddresses, first download HW using password and upload certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfd' Finished in :" $(expr $(date +%s) - $START) "s" + hwu: | # copy and install gsd, copy templates, compile, copy the HwIds, copy the IoAddresses, download HW using certificate (apax gsd & apax hwl & apax hwcc & apax hwid & apax hwadr & apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_update.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwu' Finished in :" $(expr $(date +%s) - $START) "s" + hwfdo: | # first download HW using password and upload certificate (apax hwld [using password] & apax plc-cert) + START=$(date +%s) + ..\\..\\scripts\\hw_first_download_only.sh $PLC_NAME $AXTARGET $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwfdo' Finished in :" $(expr $(date +%s) - $START) "s" + hwdo: | # download HW only using certificate (apax hwld [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\hw_download_only.sh $PLC_NAME $AXTARGET $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax hwdo' Finished in :" $(expr $(date +%s) - $START) "s" + swfd: | # software build and full download (apax build & dotnet ixc & apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfd' Finished in :" $(expr $(date +%s) - $START) "s" + swfdo: | # software full download only (apax sld load [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_full.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swfdo' Finished in :" $(expr $(date +%s) - $START) "s" + swdd: | # software build and delta download (apax build & dotnet ixc & apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_build_and_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swdd' Finished in :" $(expr $(date +%s) - $START) "s" + swddo: | # software delta download only (apax sld load --mode delta [using cert file]) + START=$(date +%s) + ..\\..\\scripts\\sw_download_delta.sh $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" + alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" + all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) + START=$(date +%s) + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + ib: | + START=$(date +%s) + apax install + apax build + dotnet ixc + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ib' Finished in :" $(expr $(date +%s) - $START) "s" + icb: | + START=$(date +%s) + apax install --catalog --strict + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax icb' Finished in :" $(expr $(date +%s) - $START) "s" + cib: | + START=$(date +%s) + apax clean + apax ib + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cib' Finished in :" $(expr $(date +%s) - $START) "s" + cicb: | + START=$(date +%s) + apax clean + apax icb + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax cicb' Finished in :" $(expr $(date +%s) - $START) "s" + ibt: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax test + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ibt' Finished in :" $(expr $(date +%s) - $START) "s" + gc: | + START=$(date +%s) + apax plc-cert --target $AXTARGET --output .\\certs\\$PLC_NAME\\$PLC_NAME.cer + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax gc' Finished in :" $(expr $(date +%s) - $START) "s" + mm: | + apax mon --targetIP $AXTARGET --file monitor.mon --username $AX_USERNAME --password $AX_TARGET_PWD --certificate .\\certs\\$PLC_NAME\\$PLC_NAME.cer --continuously + x: | + apax swfd + apax mm + t: | + apax install + apax hwl + apax ssc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax build + dotnet ixc + + tt: | + START=$(date +%s) + apax install + apax hwl + apax gc + apax gsd + apax hwcc + apax hwid + apax hwadr + apax hwdo + apax build + dotnet ixc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax tx' Finished in :" $(expr $(date +%s) - $START) "s" + ttx: | + START=$(date +%s) + apax install + apax build + dotnet ixc + apax gc + apax swfdo + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax ttx' Finished in :" $(expr $(date +%s) - $START) "s" From 595c5f25258da08d4c7b012435a3c4e2c4a60e20 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:00:19 +0100 Subject: [PATCH 06/30] abb cleanup --- ...L-V2.43-ABB-Robotics-OmniCore-20230327.xml | 2721 - ...-Balluff-BNI-XG3-x0x-xB5-x067-20250822.xml | 19020 -- .../GSDML-V2.45-Siemens-ET200SP-20250606.xml | 248950 --------------- ....33-abb-robotics-robot-device-20180814.xml | 2658 - 4 files changed, 273349 deletions(-) delete mode 100644 src/components.abb.robotics/app/gsd/source/GSDML-V2.43-ABB-Robotics-OmniCore-20230327.xml delete mode 100644 src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Balluff-BNI-XG3-x0x-xB5-x067-20250822.xml delete mode 100644 src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Siemens-ET200SP-20250606.xml delete mode 100644 src/components.abb.robotics/app/gsd/source/gsdml-v2.33-abb-robotics-robot-device-20180814.xml diff --git a/src/components.abb.robotics/app/gsd/source/GSDML-V2.43-ABB-Robotics-OmniCore-20230327.xml b/src/components.abb.robotics/app/gsd/source/GSDML-V2.43-ABB-Robotics-OmniCore-20230327.xml deleted file mode 100644 index 22a032810..000000000 --- a/src/components.abb.robotics/app/gsd/source/GSDML-V2.43-ABB-Robotics-OmniCore-20230327.xml +++ /dev/null @@ -1,2721 +0,0 @@ - - - - PROFINET Device Profile - 1.00 - Device Profile for PROFINET Devices - PROFIBUS Nutzerorganisation e. V. (PNO) - Device - - 4 - 1 - GSDML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Balluff-BNI-XG3-x0x-xB5-x067-20250822.xml b/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Balluff-BNI-XG3-x0x-xB5-x067-20250822.xml deleted file mode 100644 index a38f54289..000000000 --- a/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Balluff-BNI-XG3-x0x-xB5-x067-20250822.xml +++ /dev/null @@ -1,19020 +0,0 @@ - - - - PROFINET Device Profile - 1.00 - Device Profile for PROFINET Devices - PROFIBUS Nutzerorganisation e. V. (PNO) - Device - - 4 - 1 - GSDML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Siemens-ET200SP-20250606.xml b/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Siemens-ET200SP-20250606.xml deleted file mode 100644 index 4ba57a6c1..000000000 --- a/src/components.abb.robotics/app/gsd/source/GSDML-V2.45-Siemens-ET200SP-20250606.xml +++ /dev/null @@ -1,248950 +0,0 @@ - - - - - PROFINET Device Profile - 1.00 - Device Profile for PROFINET Devices - PROFIBUS Nutzerorganisation e. V. (PNO) - Device - - 4 - 1 - GSDML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -GCCDnwWWXwhbvmIQeRsIpR5s06qF7Y2vwOiCGdRrai0=KDLS8k2IwRO8xRz+OPpTYtO9pvtJpwO75r56IwvkPZk=Dlgw4aCJkG+e3b36nwWeKUogMsDDvjnEo49s3oz6tfc=jSz1skAFLf0wiuy1rM0Hkn3zoNb3Lohk3u60ee1/WbY=g3C9BLItv3ODfEbJkc59x0I8udUJMfgdphmw5zZhxvc=smusvnws1Go2+qyMIjs8b6lHyQQofWqr8aSHktfdaZQ=4EmMVgD2vG66BjBci7krJmK6IFdrr65QpvMT8nCgkAM=0hg6NZbyZVFeKyvh2QfDyhuyl3nPMfjtbGLkV/rdKVI=665w+rbrVk5PKeykfGDvRYBSFiwh3tqqwoBvjqQs5Eo=akt3w73/tMNwniHRMStI5wpct9lOjE15sw00S9d+22M=QdQW7AZQw5u/IRO2R95RVJV05aAYIiQ13mKj3eVtj0M=h0Rn3NNj/g5S6L8afnZ70bvkbtzXetIvdZxNcTcxqZM=sCOw2bLP67LP8NmS2FmjOb/Dm+uGCxD0Z/0Cf9Mm3qU=w4sSErYGxWLEVTK/8o3ZCnTdqw/ZbqPUW8CmVmUgUko=wE20b5T6KFuqYfVGjglpGwL06IBP7HCktcCM94hDPaM=O5QqsOwoVCZNKYV2BzS4QmPjL6QJwHyXZI0cyfzRp78ZIwoYzLzBs0izcGgKzejZG3Rx/Ga66Zvl8xK7McPyR6DvlTbwiRR/ksw9A+poCZRmYzM0bhjxc/kT4lG4w6+1imfe7NzMAy0lHWIu9jkZ5cawgk8cc+TFDorR9m2y4LI=zPP6EV/uxN4SGmykpW40WlJYlgBDigzoE2TQhOfEpsR/35bv/KsDyB3bYAcVSh0GahPdUBimcDUsNfEsFJM6dwrPNWtkfcGiZURCpGBParJ3U1vUd7SSWw6jJY1zL68utVKblN12CS0s6PrJ+TmcN4d9vLd835a5Tba3RWGUn7k=AQABqJUZ1CdCgxPUhQm2Dp2mfivzt/Afreriit+5xhRxWbWWTPhJrT1z/bqQsP79geyzj9nmKG4/xymgODb+LGDHd6P4C89UEkeVn2KazP4EuCsSAahYdH9mY2R+2ocYgCjSi6BzKYenHZDTew/5f8kOfg==2i6BYGDuI8PAfhnt/+WAMIFyshxcqFgdaiYJOnpHtxW10wWLujbHRi0tJl7tD4k3+7QP9SS0Jj6MZ71pCJuPYJdODRGoTbkhfl8toGFLIpf/51qlFqSmAr61MTMxXMBnirXyDuiFB5y7qNqX3WWSvUhWbzqqMSqkg0X1+EczmMPFGVSviaHf2tNN9jmlC0BPai15OIRQs4Gdh7VjB0Y7F6VPTJQcviIS3ZMCrnwiNKuiQddIgJz87Z30chwnnL4Gy9+FnWwCSm6OOZrnDXHoHQ==DXg+6MVEDWR0eeZkOFVobk3V6x6eyPtIm7jcgQ0VWgPMy43zqFyuq6LEDhzHeWF/jFhcwYn62F7sTjFfdSnQhI+lBEgwagTWv34v8lxN1vw=rEwg2JoXKcNd9f/ldYkI1IKeMokVV5bFLtQk1lRtf1Qtd4hM9yOVXS2VaTW+d9l1ZgX0+7YiqYuJOOAdNl/O+uPNdgUxGMVPeIv/CU75PJGdwH7jUAy4RkqA9jUVUjiKpWgI/w0zIKoVKPlFRrVIew==m2U5EZQQ6TuhMlx9eWGu9TilaueMsFdGsVgSHWVfVmtYerLIqjMfcXJBf5Mz4BMjHCbbNepQUdKp9SB/ey1xn/O6m+OLR4s35NI8ptVeXIA=zVqsZd6Da38v4dobVs5kowrK3MxaduXyya9bSp9CmZjefbiWYIS9yAaWh1TXrXJsYR3VabwJzsVTk/5cUyJq+tcYsK4q6aq3dsktHo5PffU=JsaY/BUtSPd2eKXv9lmJ06rISu3U0J6dMDY9DW6XszztzRGBqg6S5CCQuKa522SXfPutV7hpxaFgb9GjRk3j8/csyYUiSCQWszKHIskggmU0NlGdjSOnYlNB++x38GXBm2J6wkNYlFZiwNSN9KK7UjkEeDFzxX4gGaVJx3rEMYCs0mr75DJSM5X74hx5/ogGzu8HPL63X45XBbKu58YCtzh/QXsT6ZohTqw01RshY8M=Qf0uqlIoE7QIH43b4dpiNBwB8yORGLrX92Mqb8jYsjbGuRuNWn0Nti/tnpe8rpnMBvvVzggnwzPgJXaaorvrjCVmMnI64diUjvV9HYjeRVyL3Kty8c/F3bWRZcoC6DelXz838PGnYexXbHX9tvf+ZfSSArb3yrZzxdSnIAxWkrVeWcO7M8itQk1KVn0QSZLzZL3ZpEFM0cKPg1GZQBggWlLbc85D7iLW6uqjIa5iVQI=K/kEcx1vFgzPuW7TQ+yQHe1VI/ahgSsL3++KofjqGqsipMJDYxTX8fZQ6HYpExMvDMsRh7I0gG7QHzGQBGXHRQbDUD6uHG1ax+Eidsbb31ElUc3Qi1bfQWGnm94rVcgKY06Em399XuVHIX/VJXCSvg==zWyPsXdPacnOwhVfPxCFnqyVWfzQPPnPy7iErbo8QzE4ZwovqFKbsJU4i5njB+/5MXB8EThS0QSfPTlKU38VD37RD+u+SGXAYNUiTXpnKDs=Jmcza6cD/MRvw1RnEKR6bdPKIf0ZhWHw1g0V9a0W2arohSgB+ZnkKnuxtrPs5ag1GtDXQNluMo+jaa6PDpdY2uhEsKEXKWbtwjoR1d3RBmY=?> diff --git a/src/components.abb.robotics/app/gsd/source/gsdml-v2.33-abb-robotics-robot-device-20180814.xml b/src/components.abb.robotics/app/gsd/source/gsdml-v2.33-abb-robotics-robot-device-20180814.xml deleted file mode 100644 index bfcaf80ee..000000000 --- a/src/components.abb.robotics/app/gsd/source/gsdml-v2.33-abb-robotics-robot-device-20180814.xml +++ /dev/null @@ -1,2658 +0,0 @@ - - - - PROFINET Device Profile - 1.00 - Device Profile for PROFINET Devices - PROFIBUS Nutzerorganisation e. V. (PNO) - Device - - 4 - 1 - GSDML - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 16714aa153c6d2df174466b0c2f58ee83f84016a Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:03:56 +0100 Subject: [PATCH 07/30] abb --- .../SystemConstants/plc_line_HwIdentifiers.st | 70 +- .../SystemConstants/plc_line_IoAddresses.st | 4168 ++++++++--------- 2 files changed, 2119 insertions(+), 2119 deletions(-) diff --git a/src/components.abb.robotics/app/SystemConstants/plc_line_HwIdentifiers.st b/src/components.abb.robotics/app/SystemConstants/plc_line_HwIdentifiers.st index cca6e8eac..85dd3098f 100644 --- a/src/components.abb.robotics/app/SystemConstants/plc_line_HwIdentifiers.st +++ b/src/components.abb.robotics/app/SystemConstants/plc_line_HwIdentifiers.st @@ -1,35 +1,35 @@ -CONFIGURATION HardwareIDs - VAR_GLOBAL CONSTANT - abb_irc5_robot_HwID : UINT := UINT#266; - abb_irc5_robot_DI_64_bytes_DI_64_bytes_HwID : UINT := UINT#271; - abb_irc5_robot_DO_64_bytes_DO_64_bytes_HwID : UINT := UINT#270; - abb_irc5_robot_Rack_HwID : UINT := UINT#268; - abb_irc5_robot_abb_irc5_robot_HwID : UINT := UINT#269; - abb_irc5_robot_abb_irc5_robot_PROFINET_Interface_HwID : UINT := UINT#265; - abb_irc5_robot_abb_irc5_robot_PROFINET_Interface_Port_1_HwID : UINT := UINT#267; - abb_irc5_robot_abb_irc5_robot_Robot_Basic_Device_HwID : UINT := UINT#272; - abb_omnicore_robot_HwID : UINT := UINT#258; - abb_omnicore_robot_DI_64_bytes_DI_64_bytes_HwID : UINT := UINT#263; - abb_omnicore_robot_DO_64_bytes_DO_64_bytes_HwID : UINT := UINT#262; - abb_omnicore_robot_Rack_HwID : UINT := UINT#260; - abb_omnicore_robot_abb_omnicore_robot_HwID : UINT := UINT#261; - abb_omnicore_robot_abb_omnicore_robot_OmniCore_Standard_PROFINET_Device_HwID : UINT := UINT#264; - abb_omnicore_robot_abb_omnicore_robot_PROFINET_Interface_HwID : UINT := UINT#257; - abb_omnicore_robot_abb_omnicore_robot_PROFINET_Interface_Port_1_HwID : UINT := UINT#259; - plc_line_HwID : UINT := UINT#32; - plc_line_Rail_0_HwID : UINT := UINT#273; - plc_line_plc_line_HwID : UINT := UINT#48; - plc_line_plc_line_CPU_display_1_HwID : UINT := UINT#54; - plc_line_plc_line_Card_reader_writer_1_HwID : UINT := UINT#51; - plc_line_plc_line_DP_interface_1_HwID : UINT := UINT#60; - plc_line_plc_line_OPC_UA_1_HwID : UINT := UINT#117; - plc_line_plc_line_PROFINET_interface_1_HwID : UINT := UINT#64; - plc_line_plc_line_PROFINET_interface_1_Port_1_HwID : UINT := UINT#65; - plc_line_plc_line_PROFINET_interface_1_Port_2_HwID : UINT := UINT#66; - plc_line_plc_line_PROFINET_interface_2_HwID : UINT := UINT#72; - plc_line_plc_line_PROFINET_interface_2_Port_3_HwID : UINT := UINT#73; - plc_line_plc_line_Virtual_communication_interface_HwID : UINT := UINT#135; - profinet_plc_line_HwID : UINT := UINT#256; - - END_VAR -END_CONFIGURATION +CONFIGURATION HardwareIDs + VAR_GLOBAL CONSTANT + abb_irc5_robot_HwID : UINT := UINT#266; + abb_irc5_robot_DI_64_bytes_DI_64_bytes_HwID : UINT := UINT#271; + abb_irc5_robot_DO_64_bytes_DO_64_bytes_HwID : UINT := UINT#270; + abb_irc5_robot_Rack_HwID : UINT := UINT#268; + abb_irc5_robot_abb_irc5_robot_HwID : UINT := UINT#269; + abb_irc5_robot_abb_irc5_robot_PROFINET_Interface_HwID : UINT := UINT#265; + abb_irc5_robot_abb_irc5_robot_PROFINET_Interface_Port_1_HwID : UINT := UINT#267; + abb_irc5_robot_abb_irc5_robot_Robot_Basic_Device_HwID : UINT := UINT#272; + abb_omnicore_robot_HwID : UINT := UINT#258; + abb_omnicore_robot_DI_64_bytes_DI_64_bytes_HwID : UINT := UINT#263; + abb_omnicore_robot_DO_64_bytes_DO_64_bytes_HwID : UINT := UINT#262; + abb_omnicore_robot_Rack_HwID : UINT := UINT#260; + abb_omnicore_robot_abb_omnicore_robot_HwID : UINT := UINT#261; + abb_omnicore_robot_abb_omnicore_robot_OmniCore_Standard_PROFINET_Device_HwID : UINT := UINT#264; + abb_omnicore_robot_abb_omnicore_robot_PROFINET_Interface_HwID : UINT := UINT#257; + abb_omnicore_robot_abb_omnicore_robot_PROFINET_Interface_Port_1_HwID : UINT := UINT#259; + plc_line_HwID : UINT := UINT#32; + plc_line_Rail_0_HwID : UINT := UINT#273; + plc_line_plc_line_HwID : UINT := UINT#48; + plc_line_plc_line_CPU_display_1_HwID : UINT := UINT#54; + plc_line_plc_line_Card_reader_writer_1_HwID : UINT := UINT#51; + plc_line_plc_line_DP_interface_1_HwID : UINT := UINT#60; + plc_line_plc_line_OPC_UA_1_HwID : UINT := UINT#117; + plc_line_plc_line_PROFINET_interface_1_HwID : UINT := UINT#64; + plc_line_plc_line_PROFINET_interface_1_Port_1_HwID : UINT := UINT#65; + plc_line_plc_line_PROFINET_interface_1_Port_2_HwID : UINT := UINT#66; + plc_line_plc_line_PROFINET_interface_2_HwID : UINT := UINT#72; + plc_line_plc_line_PROFINET_interface_2_Port_3_HwID : UINT := UINT#73; + plc_line_plc_line_Virtual_communication_interface_HwID : UINT := UINT#135; + profinet_plc_line_HwID : UINT := UINT#256; + + END_VAR +END_CONFIGURATION diff --git a/src/components.abb.robotics/app/SystemConstants/plc_line_IoAddresses.st b/src/components.abb.robotics/app/SystemConstants/plc_line_IoAddresses.st index 9b73583bb..b5f13729b 100644 --- a/src/components.abb.robotics/app/SystemConstants/plc_line_IoAddresses.st +++ b/src/components.abb.robotics/app/SystemConstants/plc_line_IoAddresses.st @@ -1,2084 +1,2084 @@ -CONFIGURATION IoAddresses - VAR_GLOBAL - - // Module abb_irc5_robot/DI_64_bytes - abb_irc5_robot_DI_64_bytes_Input AT %IB64 : abb_irc5_robot_DI_64_bytes_Input_Layout; - - // Module abb_irc5_robot/DO_64_bytes - abb_irc5_robot_DO_64_bytes_Output AT %QB64 : abb_irc5_robot_DO_64_bytes_Output_Layout; - - // Module abb_omnicore_robot/DI_64_bytes - abb_omnicore_robot_DI_64_bytes_Input AT %IB0 : abb_omnicore_robot_DI_64_bytes_Input_Layout; - - // Module abb_omnicore_robot/DO_64_bytes - abb_omnicore_robot_DO_64_bytes_Output AT %QB0 : abb_omnicore_robot_DO_64_bytes_Output_Layout; - END_VAR -END_CONFIGURATION - -TYPE - abb_irc5_robot_DI_64_bytes_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - abb_irc5_robot_DO_64_bytes_Output_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - abb_omnicore_robot_DI_64_bytes_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - abb_omnicore_robot_DO_64_bytes_Output_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; -END_TYPE +CONFIGURATION IoAddresses + VAR_GLOBAL + + // Module abb_irc5_robot/DI_64_bytes + abb_irc5_robot_DI_64_bytes_Input AT %IB64 : abb_irc5_robot_DI_64_bytes_Input_Layout; + + // Module abb_irc5_robot/DO_64_bytes + abb_irc5_robot_DO_64_bytes_Output AT %QB64 : abb_irc5_robot_DO_64_bytes_Output_Layout; + + // Module abb_omnicore_robot/DI_64_bytes + abb_omnicore_robot_DI_64_bytes_Input AT %IB0 : abb_omnicore_robot_DI_64_bytes_Input_Layout; + + // Module abb_omnicore_robot/DO_64_bytes + abb_omnicore_robot_DO_64_bytes_Output AT %QB0 : abb_omnicore_robot_DO_64_bytes_Output_Layout; + END_VAR +END_CONFIGURATION + +TYPE + abb_irc5_robot_DI_64_bytes_Input_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; +END_TYPE + +TYPE + abb_irc5_robot_DO_64_bytes_Output_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; +END_TYPE + +TYPE + abb_omnicore_robot_DI_64_bytes_Input_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; +END_TYPE + +TYPE + abb_omnicore_robot_DO_64_bytes_Output_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; +END_TYPE From c6be8ab1f382c5a8bc4abacef7cc0a01cd9f4873 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:07:48 +0100 Subject: [PATCH 08/30] abb --- .../app/src/IO/Inputs.st | 30 +- .../app/src/IO/IoStructures.st | 4156 ++++++++--------- .../app/src/IO/Outputs.st | 30 +- 3 files changed, 2108 insertions(+), 2108 deletions(-) diff --git a/src/components.abb.robotics/app/src/IO/Inputs.st b/src/components.abb.robotics/app/src/IO/Inputs.st index 4b57daacd..de9a76497 100644 --- a/src/components.abb.robotics/app/src/IO/Inputs.st +++ b/src/components.abb.robotics/app/src/IO/Inputs.st @@ -1,15 +1,15 @@ -NAMESPACE AXOpen.Components.Abb.Robotics - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - Inputs : STRUCT - // Module abb_irc5_robot/DI_64_bytes - abb_irc5_robot_DI_64_bytes_Input AT %B64 : abb_irc5_robot_DI_64_bytes_Input_Layout; - - // Module abb_omnicore_robot/DI_64_bytes - abb_omnicore_robot_DI_64_bytes_Input AT %B0 : abb_omnicore_robot_DI_64_bytes_Input_Layout; - - END_STRUCT; - END_TYPE -END_NAMESPACE - +NAMESPACE AXOpen.Components.Abb.Robotics + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + Inputs : STRUCT + // Module abb_irc5_robot/DI_64_bytes + abb_irc5_robot_DI_64_bytes_Input AT %B64 : abb_irc5_robot_DI_64_bytes_Input_Layout; + + // Module abb_omnicore_robot/DI_64_bytes + abb_omnicore_robot_DI_64_bytes_Input AT %B0 : abb_omnicore_robot_DI_64_bytes_Input_Layout; + + END_STRUCT; + END_TYPE +END_NAMESPACE + diff --git a/src/components.abb.robotics/app/src/IO/IoStructures.st b/src/components.abb.robotics/app/src/IO/IoStructures.st index ab35c51bf..581d827f5 100644 --- a/src/components.abb.robotics/app/src/IO/IoStructures.st +++ b/src/components.abb.robotics/app/src/IO/IoStructures.st @@ -1,2078 +1,2078 @@ -NAMESPACE AXOpen.Components.Abb.Robotics - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - abb_irc5_robot_DI_64_bytes_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - abb_irc5_robot_DO_64_bytes_Output_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - abb_omnicore_robot_DI_64_bytes_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - abb_omnicore_robot_DO_64_bytes_Output_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - Signals_1_0 AT %X1.0 : BOOL; - Signals_1_1 AT %X1.1 : BOOL; - Signals_1_2 AT %X1.2 : BOOL; - Signals_1_3 AT %X1.3 : BOOL; - Signals_1_4 AT %X1.4 : BOOL; - Signals_1_5 AT %X1.5 : BOOL; - Signals_1_6 AT %X1.6 : BOOL; - Signals_1_7 AT %X1.7 : BOOL; - Signals_2_0 AT %X2.0 : BOOL; - Signals_2_1 AT %X2.1 : BOOL; - Signals_2_2 AT %X2.2 : BOOL; - Signals_2_3 AT %X2.3 : BOOL; - Signals_2_4 AT %X2.4 : BOOL; - Signals_2_5 AT %X2.5 : BOOL; - Signals_2_6 AT %X2.6 : BOOL; - Signals_2_7 AT %X2.7 : BOOL; - Signals_3_0 AT %X3.0 : BOOL; - Signals_3_1 AT %X3.1 : BOOL; - Signals_3_2 AT %X3.2 : BOOL; - Signals_3_3 AT %X3.3 : BOOL; - Signals_3_4 AT %X3.4 : BOOL; - Signals_3_5 AT %X3.5 : BOOL; - Signals_3_6 AT %X3.6 : BOOL; - Signals_3_7 AT %X3.7 : BOOL; - Signals_4_0 AT %X4.0 : BOOL; - Signals_4_1 AT %X4.1 : BOOL; - Signals_4_2 AT %X4.2 : BOOL; - Signals_4_3 AT %X4.3 : BOOL; - Signals_4_4 AT %X4.4 : BOOL; - Signals_4_5 AT %X4.5 : BOOL; - Signals_4_6 AT %X4.6 : BOOL; - Signals_4_7 AT %X4.7 : BOOL; - Signals_5_0 AT %X5.0 : BOOL; - Signals_5_1 AT %X5.1 : BOOL; - Signals_5_2 AT %X5.2 : BOOL; - Signals_5_3 AT %X5.3 : BOOL; - Signals_5_4 AT %X5.4 : BOOL; - Signals_5_5 AT %X5.5 : BOOL; - Signals_5_6 AT %X5.6 : BOOL; - Signals_5_7 AT %X5.7 : BOOL; - Signals_6_0 AT %X6.0 : BOOL; - Signals_6_1 AT %X6.1 : BOOL; - Signals_6_2 AT %X6.2 : BOOL; - Signals_6_3 AT %X6.3 : BOOL; - Signals_6_4 AT %X6.4 : BOOL; - Signals_6_5 AT %X6.5 : BOOL; - Signals_6_6 AT %X6.6 : BOOL; - Signals_6_7 AT %X6.7 : BOOL; - Signals_7_0 AT %X7.0 : BOOL; - Signals_7_1 AT %X7.1 : BOOL; - Signals_7_2 AT %X7.2 : BOOL; - Signals_7_3 AT %X7.3 : BOOL; - Signals_7_4 AT %X7.4 : BOOL; - Signals_7_5 AT %X7.5 : BOOL; - Signals_7_6 AT %X7.6 : BOOL; - Signals_7_7 AT %X7.7 : BOOL; - Signals_8_0 AT %X8.0 : BOOL; - Signals_8_1 AT %X8.1 : BOOL; - Signals_8_2 AT %X8.2 : BOOL; - Signals_8_3 AT %X8.3 : BOOL; - Signals_8_4 AT %X8.4 : BOOL; - Signals_8_5 AT %X8.5 : BOOL; - Signals_8_6 AT %X8.6 : BOOL; - Signals_8_7 AT %X8.7 : BOOL; - Signals_9_0 AT %X9.0 : BOOL; - Signals_9_1 AT %X9.1 : BOOL; - Signals_9_2 AT %X9.2 : BOOL; - Signals_9_3 AT %X9.3 : BOOL; - Signals_9_4 AT %X9.4 : BOOL; - Signals_9_5 AT %X9.5 : BOOL; - Signals_9_6 AT %X9.6 : BOOL; - Signals_9_7 AT %X9.7 : BOOL; - Signals_10_0 AT %X10.0 : BOOL; - Signals_10_1 AT %X10.1 : BOOL; - Signals_10_2 AT %X10.2 : BOOL; - Signals_10_3 AT %X10.3 : BOOL; - Signals_10_4 AT %X10.4 : BOOL; - Signals_10_5 AT %X10.5 : BOOL; - Signals_10_6 AT %X10.6 : BOOL; - Signals_10_7 AT %X10.7 : BOOL; - Signals_11_0 AT %X11.0 : BOOL; - Signals_11_1 AT %X11.1 : BOOL; - Signals_11_2 AT %X11.2 : BOOL; - Signals_11_3 AT %X11.3 : BOOL; - Signals_11_4 AT %X11.4 : BOOL; - Signals_11_5 AT %X11.5 : BOOL; - Signals_11_6 AT %X11.6 : BOOL; - Signals_11_7 AT %X11.7 : BOOL; - Signals_12_0 AT %X12.0 : BOOL; - Signals_12_1 AT %X12.1 : BOOL; - Signals_12_2 AT %X12.2 : BOOL; - Signals_12_3 AT %X12.3 : BOOL; - Signals_12_4 AT %X12.4 : BOOL; - Signals_12_5 AT %X12.5 : BOOL; - Signals_12_6 AT %X12.6 : BOOL; - Signals_12_7 AT %X12.7 : BOOL; - Signals_13_0 AT %X13.0 : BOOL; - Signals_13_1 AT %X13.1 : BOOL; - Signals_13_2 AT %X13.2 : BOOL; - Signals_13_3 AT %X13.3 : BOOL; - Signals_13_4 AT %X13.4 : BOOL; - Signals_13_5 AT %X13.5 : BOOL; - Signals_13_6 AT %X13.6 : BOOL; - Signals_13_7 AT %X13.7 : BOOL; - Signals_14_0 AT %X14.0 : BOOL; - Signals_14_1 AT %X14.1 : BOOL; - Signals_14_2 AT %X14.2 : BOOL; - Signals_14_3 AT %X14.3 : BOOL; - Signals_14_4 AT %X14.4 : BOOL; - Signals_14_5 AT %X14.5 : BOOL; - Signals_14_6 AT %X14.6 : BOOL; - Signals_14_7 AT %X14.7 : BOOL; - Signals_15_0 AT %X15.0 : BOOL; - Signals_15_1 AT %X15.1 : BOOL; - Signals_15_2 AT %X15.2 : BOOL; - Signals_15_3 AT %X15.3 : BOOL; - Signals_15_4 AT %X15.4 : BOOL; - Signals_15_5 AT %X15.5 : BOOL; - Signals_15_6 AT %X15.6 : BOOL; - Signals_15_7 AT %X15.7 : BOOL; - Signals_16_0 AT %X16.0 : BOOL; - Signals_16_1 AT %X16.1 : BOOL; - Signals_16_2 AT %X16.2 : BOOL; - Signals_16_3 AT %X16.3 : BOOL; - Signals_16_4 AT %X16.4 : BOOL; - Signals_16_5 AT %X16.5 : BOOL; - Signals_16_6 AT %X16.6 : BOOL; - Signals_16_7 AT %X16.7 : BOOL; - Signals_17_0 AT %X17.0 : BOOL; - Signals_17_1 AT %X17.1 : BOOL; - Signals_17_2 AT %X17.2 : BOOL; - Signals_17_3 AT %X17.3 : BOOL; - Signals_17_4 AT %X17.4 : BOOL; - Signals_17_5 AT %X17.5 : BOOL; - Signals_17_6 AT %X17.6 : BOOL; - Signals_17_7 AT %X17.7 : BOOL; - Signals_18_0 AT %X18.0 : BOOL; - Signals_18_1 AT %X18.1 : BOOL; - Signals_18_2 AT %X18.2 : BOOL; - Signals_18_3 AT %X18.3 : BOOL; - Signals_18_4 AT %X18.4 : BOOL; - Signals_18_5 AT %X18.5 : BOOL; - Signals_18_6 AT %X18.6 : BOOL; - Signals_18_7 AT %X18.7 : BOOL; - Signals_19_0 AT %X19.0 : BOOL; - Signals_19_1 AT %X19.1 : BOOL; - Signals_19_2 AT %X19.2 : BOOL; - Signals_19_3 AT %X19.3 : BOOL; - Signals_19_4 AT %X19.4 : BOOL; - Signals_19_5 AT %X19.5 : BOOL; - Signals_19_6 AT %X19.6 : BOOL; - Signals_19_7 AT %X19.7 : BOOL; - Signals_20_0 AT %X20.0 : BOOL; - Signals_20_1 AT %X20.1 : BOOL; - Signals_20_2 AT %X20.2 : BOOL; - Signals_20_3 AT %X20.3 : BOOL; - Signals_20_4 AT %X20.4 : BOOL; - Signals_20_5 AT %X20.5 : BOOL; - Signals_20_6 AT %X20.6 : BOOL; - Signals_20_7 AT %X20.7 : BOOL; - Signals_21_0 AT %X21.0 : BOOL; - Signals_21_1 AT %X21.1 : BOOL; - Signals_21_2 AT %X21.2 : BOOL; - Signals_21_3 AT %X21.3 : BOOL; - Signals_21_4 AT %X21.4 : BOOL; - Signals_21_5 AT %X21.5 : BOOL; - Signals_21_6 AT %X21.6 : BOOL; - Signals_21_7 AT %X21.7 : BOOL; - Signals_22_0 AT %X22.0 : BOOL; - Signals_22_1 AT %X22.1 : BOOL; - Signals_22_2 AT %X22.2 : BOOL; - Signals_22_3 AT %X22.3 : BOOL; - Signals_22_4 AT %X22.4 : BOOL; - Signals_22_5 AT %X22.5 : BOOL; - Signals_22_6 AT %X22.6 : BOOL; - Signals_22_7 AT %X22.7 : BOOL; - Signals_23_0 AT %X23.0 : BOOL; - Signals_23_1 AT %X23.1 : BOOL; - Signals_23_2 AT %X23.2 : BOOL; - Signals_23_3 AT %X23.3 : BOOL; - Signals_23_4 AT %X23.4 : BOOL; - Signals_23_5 AT %X23.5 : BOOL; - Signals_23_6 AT %X23.6 : BOOL; - Signals_23_7 AT %X23.7 : BOOL; - Signals_24_0 AT %X24.0 : BOOL; - Signals_24_1 AT %X24.1 : BOOL; - Signals_24_2 AT %X24.2 : BOOL; - Signals_24_3 AT %X24.3 : BOOL; - Signals_24_4 AT %X24.4 : BOOL; - Signals_24_5 AT %X24.5 : BOOL; - Signals_24_6 AT %X24.6 : BOOL; - Signals_24_7 AT %X24.7 : BOOL; - Signals_25_0 AT %X25.0 : BOOL; - Signals_25_1 AT %X25.1 : BOOL; - Signals_25_2 AT %X25.2 : BOOL; - Signals_25_3 AT %X25.3 : BOOL; - Signals_25_4 AT %X25.4 : BOOL; - Signals_25_5 AT %X25.5 : BOOL; - Signals_25_6 AT %X25.6 : BOOL; - Signals_25_7 AT %X25.7 : BOOL; - Signals_26_0 AT %X26.0 : BOOL; - Signals_26_1 AT %X26.1 : BOOL; - Signals_26_2 AT %X26.2 : BOOL; - Signals_26_3 AT %X26.3 : BOOL; - Signals_26_4 AT %X26.4 : BOOL; - Signals_26_5 AT %X26.5 : BOOL; - Signals_26_6 AT %X26.6 : BOOL; - Signals_26_7 AT %X26.7 : BOOL; - Signals_27_0 AT %X27.0 : BOOL; - Signals_27_1 AT %X27.1 : BOOL; - Signals_27_2 AT %X27.2 : BOOL; - Signals_27_3 AT %X27.3 : BOOL; - Signals_27_4 AT %X27.4 : BOOL; - Signals_27_5 AT %X27.5 : BOOL; - Signals_27_6 AT %X27.6 : BOOL; - Signals_27_7 AT %X27.7 : BOOL; - Signals_28_0 AT %X28.0 : BOOL; - Signals_28_1 AT %X28.1 : BOOL; - Signals_28_2 AT %X28.2 : BOOL; - Signals_28_3 AT %X28.3 : BOOL; - Signals_28_4 AT %X28.4 : BOOL; - Signals_28_5 AT %X28.5 : BOOL; - Signals_28_6 AT %X28.6 : BOOL; - Signals_28_7 AT %X28.7 : BOOL; - Signals_29_0 AT %X29.0 : BOOL; - Signals_29_1 AT %X29.1 : BOOL; - Signals_29_2 AT %X29.2 : BOOL; - Signals_29_3 AT %X29.3 : BOOL; - Signals_29_4 AT %X29.4 : BOOL; - Signals_29_5 AT %X29.5 : BOOL; - Signals_29_6 AT %X29.6 : BOOL; - Signals_29_7 AT %X29.7 : BOOL; - Signals_30_0 AT %X30.0 : BOOL; - Signals_30_1 AT %X30.1 : BOOL; - Signals_30_2 AT %X30.2 : BOOL; - Signals_30_3 AT %X30.3 : BOOL; - Signals_30_4 AT %X30.4 : BOOL; - Signals_30_5 AT %X30.5 : BOOL; - Signals_30_6 AT %X30.6 : BOOL; - Signals_30_7 AT %X30.7 : BOOL; - Signals_31_0 AT %X31.0 : BOOL; - Signals_31_1 AT %X31.1 : BOOL; - Signals_31_2 AT %X31.2 : BOOL; - Signals_31_3 AT %X31.3 : BOOL; - Signals_31_4 AT %X31.4 : BOOL; - Signals_31_5 AT %X31.5 : BOOL; - Signals_31_6 AT %X31.6 : BOOL; - Signals_31_7 AT %X31.7 : BOOL; - Signals_32_0 AT %X32.0 : BOOL; - Signals_32_1 AT %X32.1 : BOOL; - Signals_32_2 AT %X32.2 : BOOL; - Signals_32_3 AT %X32.3 : BOOL; - Signals_32_4 AT %X32.4 : BOOL; - Signals_32_5 AT %X32.5 : BOOL; - Signals_32_6 AT %X32.6 : BOOL; - Signals_32_7 AT %X32.7 : BOOL; - Signals_33_0 AT %X33.0 : BOOL; - Signals_33_1 AT %X33.1 : BOOL; - Signals_33_2 AT %X33.2 : BOOL; - Signals_33_3 AT %X33.3 : BOOL; - Signals_33_4 AT %X33.4 : BOOL; - Signals_33_5 AT %X33.5 : BOOL; - Signals_33_6 AT %X33.6 : BOOL; - Signals_33_7 AT %X33.7 : BOOL; - Signals_34_0 AT %X34.0 : BOOL; - Signals_34_1 AT %X34.1 : BOOL; - Signals_34_2 AT %X34.2 : BOOL; - Signals_34_3 AT %X34.3 : BOOL; - Signals_34_4 AT %X34.4 : BOOL; - Signals_34_5 AT %X34.5 : BOOL; - Signals_34_6 AT %X34.6 : BOOL; - Signals_34_7 AT %X34.7 : BOOL; - Signals_35_0 AT %X35.0 : BOOL; - Signals_35_1 AT %X35.1 : BOOL; - Signals_35_2 AT %X35.2 : BOOL; - Signals_35_3 AT %X35.3 : BOOL; - Signals_35_4 AT %X35.4 : BOOL; - Signals_35_5 AT %X35.5 : BOOL; - Signals_35_6 AT %X35.6 : BOOL; - Signals_35_7 AT %X35.7 : BOOL; - Signals_36_0 AT %X36.0 : BOOL; - Signals_36_1 AT %X36.1 : BOOL; - Signals_36_2 AT %X36.2 : BOOL; - Signals_36_3 AT %X36.3 : BOOL; - Signals_36_4 AT %X36.4 : BOOL; - Signals_36_5 AT %X36.5 : BOOL; - Signals_36_6 AT %X36.6 : BOOL; - Signals_36_7 AT %X36.7 : BOOL; - Signals_37_0 AT %X37.0 : BOOL; - Signals_37_1 AT %X37.1 : BOOL; - Signals_37_2 AT %X37.2 : BOOL; - Signals_37_3 AT %X37.3 : BOOL; - Signals_37_4 AT %X37.4 : BOOL; - Signals_37_5 AT %X37.5 : BOOL; - Signals_37_6 AT %X37.6 : BOOL; - Signals_37_7 AT %X37.7 : BOOL; - Signals_38_0 AT %X38.0 : BOOL; - Signals_38_1 AT %X38.1 : BOOL; - Signals_38_2 AT %X38.2 : BOOL; - Signals_38_3 AT %X38.3 : BOOL; - Signals_38_4 AT %X38.4 : BOOL; - Signals_38_5 AT %X38.5 : BOOL; - Signals_38_6 AT %X38.6 : BOOL; - Signals_38_7 AT %X38.7 : BOOL; - Signals_39_0 AT %X39.0 : BOOL; - Signals_39_1 AT %X39.1 : BOOL; - Signals_39_2 AT %X39.2 : BOOL; - Signals_39_3 AT %X39.3 : BOOL; - Signals_39_4 AT %X39.4 : BOOL; - Signals_39_5 AT %X39.5 : BOOL; - Signals_39_6 AT %X39.6 : BOOL; - Signals_39_7 AT %X39.7 : BOOL; - Signals_40_0 AT %X40.0 : BOOL; - Signals_40_1 AT %X40.1 : BOOL; - Signals_40_2 AT %X40.2 : BOOL; - Signals_40_3 AT %X40.3 : BOOL; - Signals_40_4 AT %X40.4 : BOOL; - Signals_40_5 AT %X40.5 : BOOL; - Signals_40_6 AT %X40.6 : BOOL; - Signals_40_7 AT %X40.7 : BOOL; - Signals_41_0 AT %X41.0 : BOOL; - Signals_41_1 AT %X41.1 : BOOL; - Signals_41_2 AT %X41.2 : BOOL; - Signals_41_3 AT %X41.3 : BOOL; - Signals_41_4 AT %X41.4 : BOOL; - Signals_41_5 AT %X41.5 : BOOL; - Signals_41_6 AT %X41.6 : BOOL; - Signals_41_7 AT %X41.7 : BOOL; - Signals_42_0 AT %X42.0 : BOOL; - Signals_42_1 AT %X42.1 : BOOL; - Signals_42_2 AT %X42.2 : BOOL; - Signals_42_3 AT %X42.3 : BOOL; - Signals_42_4 AT %X42.4 : BOOL; - Signals_42_5 AT %X42.5 : BOOL; - Signals_42_6 AT %X42.6 : BOOL; - Signals_42_7 AT %X42.7 : BOOL; - Signals_43_0 AT %X43.0 : BOOL; - Signals_43_1 AT %X43.1 : BOOL; - Signals_43_2 AT %X43.2 : BOOL; - Signals_43_3 AT %X43.3 : BOOL; - Signals_43_4 AT %X43.4 : BOOL; - Signals_43_5 AT %X43.5 : BOOL; - Signals_43_6 AT %X43.6 : BOOL; - Signals_43_7 AT %X43.7 : BOOL; - Signals_44_0 AT %X44.0 : BOOL; - Signals_44_1 AT %X44.1 : BOOL; - Signals_44_2 AT %X44.2 : BOOL; - Signals_44_3 AT %X44.3 : BOOL; - Signals_44_4 AT %X44.4 : BOOL; - Signals_44_5 AT %X44.5 : BOOL; - Signals_44_6 AT %X44.6 : BOOL; - Signals_44_7 AT %X44.7 : BOOL; - Signals_45_0 AT %X45.0 : BOOL; - Signals_45_1 AT %X45.1 : BOOL; - Signals_45_2 AT %X45.2 : BOOL; - Signals_45_3 AT %X45.3 : BOOL; - Signals_45_4 AT %X45.4 : BOOL; - Signals_45_5 AT %X45.5 : BOOL; - Signals_45_6 AT %X45.6 : BOOL; - Signals_45_7 AT %X45.7 : BOOL; - Signals_46_0 AT %X46.0 : BOOL; - Signals_46_1 AT %X46.1 : BOOL; - Signals_46_2 AT %X46.2 : BOOL; - Signals_46_3 AT %X46.3 : BOOL; - Signals_46_4 AT %X46.4 : BOOL; - Signals_46_5 AT %X46.5 : BOOL; - Signals_46_6 AT %X46.6 : BOOL; - Signals_46_7 AT %X46.7 : BOOL; - Signals_47_0 AT %X47.0 : BOOL; - Signals_47_1 AT %X47.1 : BOOL; - Signals_47_2 AT %X47.2 : BOOL; - Signals_47_3 AT %X47.3 : BOOL; - Signals_47_4 AT %X47.4 : BOOL; - Signals_47_5 AT %X47.5 : BOOL; - Signals_47_6 AT %X47.6 : BOOL; - Signals_47_7 AT %X47.7 : BOOL; - Signals_48_0 AT %X48.0 : BOOL; - Signals_48_1 AT %X48.1 : BOOL; - Signals_48_2 AT %X48.2 : BOOL; - Signals_48_3 AT %X48.3 : BOOL; - Signals_48_4 AT %X48.4 : BOOL; - Signals_48_5 AT %X48.5 : BOOL; - Signals_48_6 AT %X48.6 : BOOL; - Signals_48_7 AT %X48.7 : BOOL; - Signals_49_0 AT %X49.0 : BOOL; - Signals_49_1 AT %X49.1 : BOOL; - Signals_49_2 AT %X49.2 : BOOL; - Signals_49_3 AT %X49.3 : BOOL; - Signals_49_4 AT %X49.4 : BOOL; - Signals_49_5 AT %X49.5 : BOOL; - Signals_49_6 AT %X49.6 : BOOL; - Signals_49_7 AT %X49.7 : BOOL; - Signals_50_0 AT %X50.0 : BOOL; - Signals_50_1 AT %X50.1 : BOOL; - Signals_50_2 AT %X50.2 : BOOL; - Signals_50_3 AT %X50.3 : BOOL; - Signals_50_4 AT %X50.4 : BOOL; - Signals_50_5 AT %X50.5 : BOOL; - Signals_50_6 AT %X50.6 : BOOL; - Signals_50_7 AT %X50.7 : BOOL; - Signals_51_0 AT %X51.0 : BOOL; - Signals_51_1 AT %X51.1 : BOOL; - Signals_51_2 AT %X51.2 : BOOL; - Signals_51_3 AT %X51.3 : BOOL; - Signals_51_4 AT %X51.4 : BOOL; - Signals_51_5 AT %X51.5 : BOOL; - Signals_51_6 AT %X51.6 : BOOL; - Signals_51_7 AT %X51.7 : BOOL; - Signals_52_0 AT %X52.0 : BOOL; - Signals_52_1 AT %X52.1 : BOOL; - Signals_52_2 AT %X52.2 : BOOL; - Signals_52_3 AT %X52.3 : BOOL; - Signals_52_4 AT %X52.4 : BOOL; - Signals_52_5 AT %X52.5 : BOOL; - Signals_52_6 AT %X52.6 : BOOL; - Signals_52_7 AT %X52.7 : BOOL; - Signals_53_0 AT %X53.0 : BOOL; - Signals_53_1 AT %X53.1 : BOOL; - Signals_53_2 AT %X53.2 : BOOL; - Signals_53_3 AT %X53.3 : BOOL; - Signals_53_4 AT %X53.4 : BOOL; - Signals_53_5 AT %X53.5 : BOOL; - Signals_53_6 AT %X53.6 : BOOL; - Signals_53_7 AT %X53.7 : BOOL; - Signals_54_0 AT %X54.0 : BOOL; - Signals_54_1 AT %X54.1 : BOOL; - Signals_54_2 AT %X54.2 : BOOL; - Signals_54_3 AT %X54.3 : BOOL; - Signals_54_4 AT %X54.4 : BOOL; - Signals_54_5 AT %X54.5 : BOOL; - Signals_54_6 AT %X54.6 : BOOL; - Signals_54_7 AT %X54.7 : BOOL; - Signals_55_0 AT %X55.0 : BOOL; - Signals_55_1 AT %X55.1 : BOOL; - Signals_55_2 AT %X55.2 : BOOL; - Signals_55_3 AT %X55.3 : BOOL; - Signals_55_4 AT %X55.4 : BOOL; - Signals_55_5 AT %X55.5 : BOOL; - Signals_55_6 AT %X55.6 : BOOL; - Signals_55_7 AT %X55.7 : BOOL; - Signals_56_0 AT %X56.0 : BOOL; - Signals_56_1 AT %X56.1 : BOOL; - Signals_56_2 AT %X56.2 : BOOL; - Signals_56_3 AT %X56.3 : BOOL; - Signals_56_4 AT %X56.4 : BOOL; - Signals_56_5 AT %X56.5 : BOOL; - Signals_56_6 AT %X56.6 : BOOL; - Signals_56_7 AT %X56.7 : BOOL; - Signals_57_0 AT %X57.0 : BOOL; - Signals_57_1 AT %X57.1 : BOOL; - Signals_57_2 AT %X57.2 : BOOL; - Signals_57_3 AT %X57.3 : BOOL; - Signals_57_4 AT %X57.4 : BOOL; - Signals_57_5 AT %X57.5 : BOOL; - Signals_57_6 AT %X57.6 : BOOL; - Signals_57_7 AT %X57.7 : BOOL; - Signals_58_0 AT %X58.0 : BOOL; - Signals_58_1 AT %X58.1 : BOOL; - Signals_58_2 AT %X58.2 : BOOL; - Signals_58_3 AT %X58.3 : BOOL; - Signals_58_4 AT %X58.4 : BOOL; - Signals_58_5 AT %X58.5 : BOOL; - Signals_58_6 AT %X58.6 : BOOL; - Signals_58_7 AT %X58.7 : BOOL; - Signals_59_0 AT %X59.0 : BOOL; - Signals_59_1 AT %X59.1 : BOOL; - Signals_59_2 AT %X59.2 : BOOL; - Signals_59_3 AT %X59.3 : BOOL; - Signals_59_4 AT %X59.4 : BOOL; - Signals_59_5 AT %X59.5 : BOOL; - Signals_59_6 AT %X59.6 : BOOL; - Signals_59_7 AT %X59.7 : BOOL; - Signals_60_0 AT %X60.0 : BOOL; - Signals_60_1 AT %X60.1 : BOOL; - Signals_60_2 AT %X60.2 : BOOL; - Signals_60_3 AT %X60.3 : BOOL; - Signals_60_4 AT %X60.4 : BOOL; - Signals_60_5 AT %X60.5 : BOOL; - Signals_60_6 AT %X60.6 : BOOL; - Signals_60_7 AT %X60.7 : BOOL; - Signals_61_0 AT %X61.0 : BOOL; - Signals_61_1 AT %X61.1 : BOOL; - Signals_61_2 AT %X61.2 : BOOL; - Signals_61_3 AT %X61.3 : BOOL; - Signals_61_4 AT %X61.4 : BOOL; - Signals_61_5 AT %X61.5 : BOOL; - Signals_61_6 AT %X61.6 : BOOL; - Signals_61_7 AT %X61.7 : BOOL; - Signals_62_0 AT %X62.0 : BOOL; - Signals_62_1 AT %X62.1 : BOOL; - Signals_62_2 AT %X62.2 : BOOL; - Signals_62_3 AT %X62.3 : BOOL; - Signals_62_4 AT %X62.4 : BOOL; - Signals_62_5 AT %X62.5 : BOOL; - Signals_62_6 AT %X62.6 : BOOL; - Signals_62_7 AT %X62.7 : BOOL; - Signals_63_0 AT %X63.0 : BOOL; - Signals_63_1 AT %X63.1 : BOOL; - Signals_63_2 AT %X63.2 : BOOL; - Signals_63_3 AT %X63.3 : BOOL; - Signals_63_4 AT %X63.4 : BOOL; - Signals_63_5 AT %X63.5 : BOOL; - Signals_63_6 AT %X63.6 : BOOL; - Signals_63_7 AT %X63.7 : BOOL; - END_STRUCT; - END_TYPE -END_NAMESPACE - +NAMESPACE AXOpen.Components.Abb.Robotics + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + abb_irc5_robot_DI_64_bytes_Input_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; + END_TYPE + + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + abb_irc5_robot_DO_64_bytes_Output_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; + END_TYPE + + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + abb_omnicore_robot_DI_64_bytes_Input_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; + END_TYPE + + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + abb_omnicore_robot_DO_64_bytes_Output_Layout : STRUCT + Signals_0_0 AT %X0.0 : BOOL; + Signals_0_1 AT %X0.1 : BOOL; + Signals_0_2 AT %X0.2 : BOOL; + Signals_0_3 AT %X0.3 : BOOL; + Signals_0_4 AT %X0.4 : BOOL; + Signals_0_5 AT %X0.5 : BOOL; + Signals_0_6 AT %X0.6 : BOOL; + Signals_0_7 AT %X0.7 : BOOL; + Signals_1_0 AT %X1.0 : BOOL; + Signals_1_1 AT %X1.1 : BOOL; + Signals_1_2 AT %X1.2 : BOOL; + Signals_1_3 AT %X1.3 : BOOL; + Signals_1_4 AT %X1.4 : BOOL; + Signals_1_5 AT %X1.5 : BOOL; + Signals_1_6 AT %X1.6 : BOOL; + Signals_1_7 AT %X1.7 : BOOL; + Signals_2_0 AT %X2.0 : BOOL; + Signals_2_1 AT %X2.1 : BOOL; + Signals_2_2 AT %X2.2 : BOOL; + Signals_2_3 AT %X2.3 : BOOL; + Signals_2_4 AT %X2.4 : BOOL; + Signals_2_5 AT %X2.5 : BOOL; + Signals_2_6 AT %X2.6 : BOOL; + Signals_2_7 AT %X2.7 : BOOL; + Signals_3_0 AT %X3.0 : BOOL; + Signals_3_1 AT %X3.1 : BOOL; + Signals_3_2 AT %X3.2 : BOOL; + Signals_3_3 AT %X3.3 : BOOL; + Signals_3_4 AT %X3.4 : BOOL; + Signals_3_5 AT %X3.5 : BOOL; + Signals_3_6 AT %X3.6 : BOOL; + Signals_3_7 AT %X3.7 : BOOL; + Signals_4_0 AT %X4.0 : BOOL; + Signals_4_1 AT %X4.1 : BOOL; + Signals_4_2 AT %X4.2 : BOOL; + Signals_4_3 AT %X4.3 : BOOL; + Signals_4_4 AT %X4.4 : BOOL; + Signals_4_5 AT %X4.5 : BOOL; + Signals_4_6 AT %X4.6 : BOOL; + Signals_4_7 AT %X4.7 : BOOL; + Signals_5_0 AT %X5.0 : BOOL; + Signals_5_1 AT %X5.1 : BOOL; + Signals_5_2 AT %X5.2 : BOOL; + Signals_5_3 AT %X5.3 : BOOL; + Signals_5_4 AT %X5.4 : BOOL; + Signals_5_5 AT %X5.5 : BOOL; + Signals_5_6 AT %X5.6 : BOOL; + Signals_5_7 AT %X5.7 : BOOL; + Signals_6_0 AT %X6.0 : BOOL; + Signals_6_1 AT %X6.1 : BOOL; + Signals_6_2 AT %X6.2 : BOOL; + Signals_6_3 AT %X6.3 : BOOL; + Signals_6_4 AT %X6.4 : BOOL; + Signals_6_5 AT %X6.5 : BOOL; + Signals_6_6 AT %X6.6 : BOOL; + Signals_6_7 AT %X6.7 : BOOL; + Signals_7_0 AT %X7.0 : BOOL; + Signals_7_1 AT %X7.1 : BOOL; + Signals_7_2 AT %X7.2 : BOOL; + Signals_7_3 AT %X7.3 : BOOL; + Signals_7_4 AT %X7.4 : BOOL; + Signals_7_5 AT %X7.5 : BOOL; + Signals_7_6 AT %X7.6 : BOOL; + Signals_7_7 AT %X7.7 : BOOL; + Signals_8_0 AT %X8.0 : BOOL; + Signals_8_1 AT %X8.1 : BOOL; + Signals_8_2 AT %X8.2 : BOOL; + Signals_8_3 AT %X8.3 : BOOL; + Signals_8_4 AT %X8.4 : BOOL; + Signals_8_5 AT %X8.5 : BOOL; + Signals_8_6 AT %X8.6 : BOOL; + Signals_8_7 AT %X8.7 : BOOL; + Signals_9_0 AT %X9.0 : BOOL; + Signals_9_1 AT %X9.1 : BOOL; + Signals_9_2 AT %X9.2 : BOOL; + Signals_9_3 AT %X9.3 : BOOL; + Signals_9_4 AT %X9.4 : BOOL; + Signals_9_5 AT %X9.5 : BOOL; + Signals_9_6 AT %X9.6 : BOOL; + Signals_9_7 AT %X9.7 : BOOL; + Signals_10_0 AT %X10.0 : BOOL; + Signals_10_1 AT %X10.1 : BOOL; + Signals_10_2 AT %X10.2 : BOOL; + Signals_10_3 AT %X10.3 : BOOL; + Signals_10_4 AT %X10.4 : BOOL; + Signals_10_5 AT %X10.5 : BOOL; + Signals_10_6 AT %X10.6 : BOOL; + Signals_10_7 AT %X10.7 : BOOL; + Signals_11_0 AT %X11.0 : BOOL; + Signals_11_1 AT %X11.1 : BOOL; + Signals_11_2 AT %X11.2 : BOOL; + Signals_11_3 AT %X11.3 : BOOL; + Signals_11_4 AT %X11.4 : BOOL; + Signals_11_5 AT %X11.5 : BOOL; + Signals_11_6 AT %X11.6 : BOOL; + Signals_11_7 AT %X11.7 : BOOL; + Signals_12_0 AT %X12.0 : BOOL; + Signals_12_1 AT %X12.1 : BOOL; + Signals_12_2 AT %X12.2 : BOOL; + Signals_12_3 AT %X12.3 : BOOL; + Signals_12_4 AT %X12.4 : BOOL; + Signals_12_5 AT %X12.5 : BOOL; + Signals_12_6 AT %X12.6 : BOOL; + Signals_12_7 AT %X12.7 : BOOL; + Signals_13_0 AT %X13.0 : BOOL; + Signals_13_1 AT %X13.1 : BOOL; + Signals_13_2 AT %X13.2 : BOOL; + Signals_13_3 AT %X13.3 : BOOL; + Signals_13_4 AT %X13.4 : BOOL; + Signals_13_5 AT %X13.5 : BOOL; + Signals_13_6 AT %X13.6 : BOOL; + Signals_13_7 AT %X13.7 : BOOL; + Signals_14_0 AT %X14.0 : BOOL; + Signals_14_1 AT %X14.1 : BOOL; + Signals_14_2 AT %X14.2 : BOOL; + Signals_14_3 AT %X14.3 : BOOL; + Signals_14_4 AT %X14.4 : BOOL; + Signals_14_5 AT %X14.5 : BOOL; + Signals_14_6 AT %X14.6 : BOOL; + Signals_14_7 AT %X14.7 : BOOL; + Signals_15_0 AT %X15.0 : BOOL; + Signals_15_1 AT %X15.1 : BOOL; + Signals_15_2 AT %X15.2 : BOOL; + Signals_15_3 AT %X15.3 : BOOL; + Signals_15_4 AT %X15.4 : BOOL; + Signals_15_5 AT %X15.5 : BOOL; + Signals_15_6 AT %X15.6 : BOOL; + Signals_15_7 AT %X15.7 : BOOL; + Signals_16_0 AT %X16.0 : BOOL; + Signals_16_1 AT %X16.1 : BOOL; + Signals_16_2 AT %X16.2 : BOOL; + Signals_16_3 AT %X16.3 : BOOL; + Signals_16_4 AT %X16.4 : BOOL; + Signals_16_5 AT %X16.5 : BOOL; + Signals_16_6 AT %X16.6 : BOOL; + Signals_16_7 AT %X16.7 : BOOL; + Signals_17_0 AT %X17.0 : BOOL; + Signals_17_1 AT %X17.1 : BOOL; + Signals_17_2 AT %X17.2 : BOOL; + Signals_17_3 AT %X17.3 : BOOL; + Signals_17_4 AT %X17.4 : BOOL; + Signals_17_5 AT %X17.5 : BOOL; + Signals_17_6 AT %X17.6 : BOOL; + Signals_17_7 AT %X17.7 : BOOL; + Signals_18_0 AT %X18.0 : BOOL; + Signals_18_1 AT %X18.1 : BOOL; + Signals_18_2 AT %X18.2 : BOOL; + Signals_18_3 AT %X18.3 : BOOL; + Signals_18_4 AT %X18.4 : BOOL; + Signals_18_5 AT %X18.5 : BOOL; + Signals_18_6 AT %X18.6 : BOOL; + Signals_18_7 AT %X18.7 : BOOL; + Signals_19_0 AT %X19.0 : BOOL; + Signals_19_1 AT %X19.1 : BOOL; + Signals_19_2 AT %X19.2 : BOOL; + Signals_19_3 AT %X19.3 : BOOL; + Signals_19_4 AT %X19.4 : BOOL; + Signals_19_5 AT %X19.5 : BOOL; + Signals_19_6 AT %X19.6 : BOOL; + Signals_19_7 AT %X19.7 : BOOL; + Signals_20_0 AT %X20.0 : BOOL; + Signals_20_1 AT %X20.1 : BOOL; + Signals_20_2 AT %X20.2 : BOOL; + Signals_20_3 AT %X20.3 : BOOL; + Signals_20_4 AT %X20.4 : BOOL; + Signals_20_5 AT %X20.5 : BOOL; + Signals_20_6 AT %X20.6 : BOOL; + Signals_20_7 AT %X20.7 : BOOL; + Signals_21_0 AT %X21.0 : BOOL; + Signals_21_1 AT %X21.1 : BOOL; + Signals_21_2 AT %X21.2 : BOOL; + Signals_21_3 AT %X21.3 : BOOL; + Signals_21_4 AT %X21.4 : BOOL; + Signals_21_5 AT %X21.5 : BOOL; + Signals_21_6 AT %X21.6 : BOOL; + Signals_21_7 AT %X21.7 : BOOL; + Signals_22_0 AT %X22.0 : BOOL; + Signals_22_1 AT %X22.1 : BOOL; + Signals_22_2 AT %X22.2 : BOOL; + Signals_22_3 AT %X22.3 : BOOL; + Signals_22_4 AT %X22.4 : BOOL; + Signals_22_5 AT %X22.5 : BOOL; + Signals_22_6 AT %X22.6 : BOOL; + Signals_22_7 AT %X22.7 : BOOL; + Signals_23_0 AT %X23.0 : BOOL; + Signals_23_1 AT %X23.1 : BOOL; + Signals_23_2 AT %X23.2 : BOOL; + Signals_23_3 AT %X23.3 : BOOL; + Signals_23_4 AT %X23.4 : BOOL; + Signals_23_5 AT %X23.5 : BOOL; + Signals_23_6 AT %X23.6 : BOOL; + Signals_23_7 AT %X23.7 : BOOL; + Signals_24_0 AT %X24.0 : BOOL; + Signals_24_1 AT %X24.1 : BOOL; + Signals_24_2 AT %X24.2 : BOOL; + Signals_24_3 AT %X24.3 : BOOL; + Signals_24_4 AT %X24.4 : BOOL; + Signals_24_5 AT %X24.5 : BOOL; + Signals_24_6 AT %X24.6 : BOOL; + Signals_24_7 AT %X24.7 : BOOL; + Signals_25_0 AT %X25.0 : BOOL; + Signals_25_1 AT %X25.1 : BOOL; + Signals_25_2 AT %X25.2 : BOOL; + Signals_25_3 AT %X25.3 : BOOL; + Signals_25_4 AT %X25.4 : BOOL; + Signals_25_5 AT %X25.5 : BOOL; + Signals_25_6 AT %X25.6 : BOOL; + Signals_25_7 AT %X25.7 : BOOL; + Signals_26_0 AT %X26.0 : BOOL; + Signals_26_1 AT %X26.1 : BOOL; + Signals_26_2 AT %X26.2 : BOOL; + Signals_26_3 AT %X26.3 : BOOL; + Signals_26_4 AT %X26.4 : BOOL; + Signals_26_5 AT %X26.5 : BOOL; + Signals_26_6 AT %X26.6 : BOOL; + Signals_26_7 AT %X26.7 : BOOL; + Signals_27_0 AT %X27.0 : BOOL; + Signals_27_1 AT %X27.1 : BOOL; + Signals_27_2 AT %X27.2 : BOOL; + Signals_27_3 AT %X27.3 : BOOL; + Signals_27_4 AT %X27.4 : BOOL; + Signals_27_5 AT %X27.5 : BOOL; + Signals_27_6 AT %X27.6 : BOOL; + Signals_27_7 AT %X27.7 : BOOL; + Signals_28_0 AT %X28.0 : BOOL; + Signals_28_1 AT %X28.1 : BOOL; + Signals_28_2 AT %X28.2 : BOOL; + Signals_28_3 AT %X28.3 : BOOL; + Signals_28_4 AT %X28.4 : BOOL; + Signals_28_5 AT %X28.5 : BOOL; + Signals_28_6 AT %X28.6 : BOOL; + Signals_28_7 AT %X28.7 : BOOL; + Signals_29_0 AT %X29.0 : BOOL; + Signals_29_1 AT %X29.1 : BOOL; + Signals_29_2 AT %X29.2 : BOOL; + Signals_29_3 AT %X29.3 : BOOL; + Signals_29_4 AT %X29.4 : BOOL; + Signals_29_5 AT %X29.5 : BOOL; + Signals_29_6 AT %X29.6 : BOOL; + Signals_29_7 AT %X29.7 : BOOL; + Signals_30_0 AT %X30.0 : BOOL; + Signals_30_1 AT %X30.1 : BOOL; + Signals_30_2 AT %X30.2 : BOOL; + Signals_30_3 AT %X30.3 : BOOL; + Signals_30_4 AT %X30.4 : BOOL; + Signals_30_5 AT %X30.5 : BOOL; + Signals_30_6 AT %X30.6 : BOOL; + Signals_30_7 AT %X30.7 : BOOL; + Signals_31_0 AT %X31.0 : BOOL; + Signals_31_1 AT %X31.1 : BOOL; + Signals_31_2 AT %X31.2 : BOOL; + Signals_31_3 AT %X31.3 : BOOL; + Signals_31_4 AT %X31.4 : BOOL; + Signals_31_5 AT %X31.5 : BOOL; + Signals_31_6 AT %X31.6 : BOOL; + Signals_31_7 AT %X31.7 : BOOL; + Signals_32_0 AT %X32.0 : BOOL; + Signals_32_1 AT %X32.1 : BOOL; + Signals_32_2 AT %X32.2 : BOOL; + Signals_32_3 AT %X32.3 : BOOL; + Signals_32_4 AT %X32.4 : BOOL; + Signals_32_5 AT %X32.5 : BOOL; + Signals_32_6 AT %X32.6 : BOOL; + Signals_32_7 AT %X32.7 : BOOL; + Signals_33_0 AT %X33.0 : BOOL; + Signals_33_1 AT %X33.1 : BOOL; + Signals_33_2 AT %X33.2 : BOOL; + Signals_33_3 AT %X33.3 : BOOL; + Signals_33_4 AT %X33.4 : BOOL; + Signals_33_5 AT %X33.5 : BOOL; + Signals_33_6 AT %X33.6 : BOOL; + Signals_33_7 AT %X33.7 : BOOL; + Signals_34_0 AT %X34.0 : BOOL; + Signals_34_1 AT %X34.1 : BOOL; + Signals_34_2 AT %X34.2 : BOOL; + Signals_34_3 AT %X34.3 : BOOL; + Signals_34_4 AT %X34.4 : BOOL; + Signals_34_5 AT %X34.5 : BOOL; + Signals_34_6 AT %X34.6 : BOOL; + Signals_34_7 AT %X34.7 : BOOL; + Signals_35_0 AT %X35.0 : BOOL; + Signals_35_1 AT %X35.1 : BOOL; + Signals_35_2 AT %X35.2 : BOOL; + Signals_35_3 AT %X35.3 : BOOL; + Signals_35_4 AT %X35.4 : BOOL; + Signals_35_5 AT %X35.5 : BOOL; + Signals_35_6 AT %X35.6 : BOOL; + Signals_35_7 AT %X35.7 : BOOL; + Signals_36_0 AT %X36.0 : BOOL; + Signals_36_1 AT %X36.1 : BOOL; + Signals_36_2 AT %X36.2 : BOOL; + Signals_36_3 AT %X36.3 : BOOL; + Signals_36_4 AT %X36.4 : BOOL; + Signals_36_5 AT %X36.5 : BOOL; + Signals_36_6 AT %X36.6 : BOOL; + Signals_36_7 AT %X36.7 : BOOL; + Signals_37_0 AT %X37.0 : BOOL; + Signals_37_1 AT %X37.1 : BOOL; + Signals_37_2 AT %X37.2 : BOOL; + Signals_37_3 AT %X37.3 : BOOL; + Signals_37_4 AT %X37.4 : BOOL; + Signals_37_5 AT %X37.5 : BOOL; + Signals_37_6 AT %X37.6 : BOOL; + Signals_37_7 AT %X37.7 : BOOL; + Signals_38_0 AT %X38.0 : BOOL; + Signals_38_1 AT %X38.1 : BOOL; + Signals_38_2 AT %X38.2 : BOOL; + Signals_38_3 AT %X38.3 : BOOL; + Signals_38_4 AT %X38.4 : BOOL; + Signals_38_5 AT %X38.5 : BOOL; + Signals_38_6 AT %X38.6 : BOOL; + Signals_38_7 AT %X38.7 : BOOL; + Signals_39_0 AT %X39.0 : BOOL; + Signals_39_1 AT %X39.1 : BOOL; + Signals_39_2 AT %X39.2 : BOOL; + Signals_39_3 AT %X39.3 : BOOL; + Signals_39_4 AT %X39.4 : BOOL; + Signals_39_5 AT %X39.5 : BOOL; + Signals_39_6 AT %X39.6 : BOOL; + Signals_39_7 AT %X39.7 : BOOL; + Signals_40_0 AT %X40.0 : BOOL; + Signals_40_1 AT %X40.1 : BOOL; + Signals_40_2 AT %X40.2 : BOOL; + Signals_40_3 AT %X40.3 : BOOL; + Signals_40_4 AT %X40.4 : BOOL; + Signals_40_5 AT %X40.5 : BOOL; + Signals_40_6 AT %X40.6 : BOOL; + Signals_40_7 AT %X40.7 : BOOL; + Signals_41_0 AT %X41.0 : BOOL; + Signals_41_1 AT %X41.1 : BOOL; + Signals_41_2 AT %X41.2 : BOOL; + Signals_41_3 AT %X41.3 : BOOL; + Signals_41_4 AT %X41.4 : BOOL; + Signals_41_5 AT %X41.5 : BOOL; + Signals_41_6 AT %X41.6 : BOOL; + Signals_41_7 AT %X41.7 : BOOL; + Signals_42_0 AT %X42.0 : BOOL; + Signals_42_1 AT %X42.1 : BOOL; + Signals_42_2 AT %X42.2 : BOOL; + Signals_42_3 AT %X42.3 : BOOL; + Signals_42_4 AT %X42.4 : BOOL; + Signals_42_5 AT %X42.5 : BOOL; + Signals_42_6 AT %X42.6 : BOOL; + Signals_42_7 AT %X42.7 : BOOL; + Signals_43_0 AT %X43.0 : BOOL; + Signals_43_1 AT %X43.1 : BOOL; + Signals_43_2 AT %X43.2 : BOOL; + Signals_43_3 AT %X43.3 : BOOL; + Signals_43_4 AT %X43.4 : BOOL; + Signals_43_5 AT %X43.5 : BOOL; + Signals_43_6 AT %X43.6 : BOOL; + Signals_43_7 AT %X43.7 : BOOL; + Signals_44_0 AT %X44.0 : BOOL; + Signals_44_1 AT %X44.1 : BOOL; + Signals_44_2 AT %X44.2 : BOOL; + Signals_44_3 AT %X44.3 : BOOL; + Signals_44_4 AT %X44.4 : BOOL; + Signals_44_5 AT %X44.5 : BOOL; + Signals_44_6 AT %X44.6 : BOOL; + Signals_44_7 AT %X44.7 : BOOL; + Signals_45_0 AT %X45.0 : BOOL; + Signals_45_1 AT %X45.1 : BOOL; + Signals_45_2 AT %X45.2 : BOOL; + Signals_45_3 AT %X45.3 : BOOL; + Signals_45_4 AT %X45.4 : BOOL; + Signals_45_5 AT %X45.5 : BOOL; + Signals_45_6 AT %X45.6 : BOOL; + Signals_45_7 AT %X45.7 : BOOL; + Signals_46_0 AT %X46.0 : BOOL; + Signals_46_1 AT %X46.1 : BOOL; + Signals_46_2 AT %X46.2 : BOOL; + Signals_46_3 AT %X46.3 : BOOL; + Signals_46_4 AT %X46.4 : BOOL; + Signals_46_5 AT %X46.5 : BOOL; + Signals_46_6 AT %X46.6 : BOOL; + Signals_46_7 AT %X46.7 : BOOL; + Signals_47_0 AT %X47.0 : BOOL; + Signals_47_1 AT %X47.1 : BOOL; + Signals_47_2 AT %X47.2 : BOOL; + Signals_47_3 AT %X47.3 : BOOL; + Signals_47_4 AT %X47.4 : BOOL; + Signals_47_5 AT %X47.5 : BOOL; + Signals_47_6 AT %X47.6 : BOOL; + Signals_47_7 AT %X47.7 : BOOL; + Signals_48_0 AT %X48.0 : BOOL; + Signals_48_1 AT %X48.1 : BOOL; + Signals_48_2 AT %X48.2 : BOOL; + Signals_48_3 AT %X48.3 : BOOL; + Signals_48_4 AT %X48.4 : BOOL; + Signals_48_5 AT %X48.5 : BOOL; + Signals_48_6 AT %X48.6 : BOOL; + Signals_48_7 AT %X48.7 : BOOL; + Signals_49_0 AT %X49.0 : BOOL; + Signals_49_1 AT %X49.1 : BOOL; + Signals_49_2 AT %X49.2 : BOOL; + Signals_49_3 AT %X49.3 : BOOL; + Signals_49_4 AT %X49.4 : BOOL; + Signals_49_5 AT %X49.5 : BOOL; + Signals_49_6 AT %X49.6 : BOOL; + Signals_49_7 AT %X49.7 : BOOL; + Signals_50_0 AT %X50.0 : BOOL; + Signals_50_1 AT %X50.1 : BOOL; + Signals_50_2 AT %X50.2 : BOOL; + Signals_50_3 AT %X50.3 : BOOL; + Signals_50_4 AT %X50.4 : BOOL; + Signals_50_5 AT %X50.5 : BOOL; + Signals_50_6 AT %X50.6 : BOOL; + Signals_50_7 AT %X50.7 : BOOL; + Signals_51_0 AT %X51.0 : BOOL; + Signals_51_1 AT %X51.1 : BOOL; + Signals_51_2 AT %X51.2 : BOOL; + Signals_51_3 AT %X51.3 : BOOL; + Signals_51_4 AT %X51.4 : BOOL; + Signals_51_5 AT %X51.5 : BOOL; + Signals_51_6 AT %X51.6 : BOOL; + Signals_51_7 AT %X51.7 : BOOL; + Signals_52_0 AT %X52.0 : BOOL; + Signals_52_1 AT %X52.1 : BOOL; + Signals_52_2 AT %X52.2 : BOOL; + Signals_52_3 AT %X52.3 : BOOL; + Signals_52_4 AT %X52.4 : BOOL; + Signals_52_5 AT %X52.5 : BOOL; + Signals_52_6 AT %X52.6 : BOOL; + Signals_52_7 AT %X52.7 : BOOL; + Signals_53_0 AT %X53.0 : BOOL; + Signals_53_1 AT %X53.1 : BOOL; + Signals_53_2 AT %X53.2 : BOOL; + Signals_53_3 AT %X53.3 : BOOL; + Signals_53_4 AT %X53.4 : BOOL; + Signals_53_5 AT %X53.5 : BOOL; + Signals_53_6 AT %X53.6 : BOOL; + Signals_53_7 AT %X53.7 : BOOL; + Signals_54_0 AT %X54.0 : BOOL; + Signals_54_1 AT %X54.1 : BOOL; + Signals_54_2 AT %X54.2 : BOOL; + Signals_54_3 AT %X54.3 : BOOL; + Signals_54_4 AT %X54.4 : BOOL; + Signals_54_5 AT %X54.5 : BOOL; + Signals_54_6 AT %X54.6 : BOOL; + Signals_54_7 AT %X54.7 : BOOL; + Signals_55_0 AT %X55.0 : BOOL; + Signals_55_1 AT %X55.1 : BOOL; + Signals_55_2 AT %X55.2 : BOOL; + Signals_55_3 AT %X55.3 : BOOL; + Signals_55_4 AT %X55.4 : BOOL; + Signals_55_5 AT %X55.5 : BOOL; + Signals_55_6 AT %X55.6 : BOOL; + Signals_55_7 AT %X55.7 : BOOL; + Signals_56_0 AT %X56.0 : BOOL; + Signals_56_1 AT %X56.1 : BOOL; + Signals_56_2 AT %X56.2 : BOOL; + Signals_56_3 AT %X56.3 : BOOL; + Signals_56_4 AT %X56.4 : BOOL; + Signals_56_5 AT %X56.5 : BOOL; + Signals_56_6 AT %X56.6 : BOOL; + Signals_56_7 AT %X56.7 : BOOL; + Signals_57_0 AT %X57.0 : BOOL; + Signals_57_1 AT %X57.1 : BOOL; + Signals_57_2 AT %X57.2 : BOOL; + Signals_57_3 AT %X57.3 : BOOL; + Signals_57_4 AT %X57.4 : BOOL; + Signals_57_5 AT %X57.5 : BOOL; + Signals_57_6 AT %X57.6 : BOOL; + Signals_57_7 AT %X57.7 : BOOL; + Signals_58_0 AT %X58.0 : BOOL; + Signals_58_1 AT %X58.1 : BOOL; + Signals_58_2 AT %X58.2 : BOOL; + Signals_58_3 AT %X58.3 : BOOL; + Signals_58_4 AT %X58.4 : BOOL; + Signals_58_5 AT %X58.5 : BOOL; + Signals_58_6 AT %X58.6 : BOOL; + Signals_58_7 AT %X58.7 : BOOL; + Signals_59_0 AT %X59.0 : BOOL; + Signals_59_1 AT %X59.1 : BOOL; + Signals_59_2 AT %X59.2 : BOOL; + Signals_59_3 AT %X59.3 : BOOL; + Signals_59_4 AT %X59.4 : BOOL; + Signals_59_5 AT %X59.5 : BOOL; + Signals_59_6 AT %X59.6 : BOOL; + Signals_59_7 AT %X59.7 : BOOL; + Signals_60_0 AT %X60.0 : BOOL; + Signals_60_1 AT %X60.1 : BOOL; + Signals_60_2 AT %X60.2 : BOOL; + Signals_60_3 AT %X60.3 : BOOL; + Signals_60_4 AT %X60.4 : BOOL; + Signals_60_5 AT %X60.5 : BOOL; + Signals_60_6 AT %X60.6 : BOOL; + Signals_60_7 AT %X60.7 : BOOL; + Signals_61_0 AT %X61.0 : BOOL; + Signals_61_1 AT %X61.1 : BOOL; + Signals_61_2 AT %X61.2 : BOOL; + Signals_61_3 AT %X61.3 : BOOL; + Signals_61_4 AT %X61.4 : BOOL; + Signals_61_5 AT %X61.5 : BOOL; + Signals_61_6 AT %X61.6 : BOOL; + Signals_61_7 AT %X61.7 : BOOL; + Signals_62_0 AT %X62.0 : BOOL; + Signals_62_1 AT %X62.1 : BOOL; + Signals_62_2 AT %X62.2 : BOOL; + Signals_62_3 AT %X62.3 : BOOL; + Signals_62_4 AT %X62.4 : BOOL; + Signals_62_5 AT %X62.5 : BOOL; + Signals_62_6 AT %X62.6 : BOOL; + Signals_62_7 AT %X62.7 : BOOL; + Signals_63_0 AT %X63.0 : BOOL; + Signals_63_1 AT %X63.1 : BOOL; + Signals_63_2 AT %X63.2 : BOOL; + Signals_63_3 AT %X63.3 : BOOL; + Signals_63_4 AT %X63.4 : BOOL; + Signals_63_5 AT %X63.5 : BOOL; + Signals_63_6 AT %X63.6 : BOOL; + Signals_63_7 AT %X63.7 : BOOL; + END_STRUCT; + END_TYPE +END_NAMESPACE + diff --git a/src/components.abb.robotics/app/src/IO/Outputs.st b/src/components.abb.robotics/app/src/IO/Outputs.st index a480e03f3..3f13a292f 100644 --- a/src/components.abb.robotics/app/src/IO/Outputs.st +++ b/src/components.abb.robotics/app/src/IO/Outputs.st @@ -1,15 +1,15 @@ -NAMESPACE AXOpen.Components.Abb.Robotics - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - Outputs : STRUCT - // Module abb_irc5_robot/DO_64_bytes - abb_irc5_robot_DO_64_bytes_Output AT %B64 : abb_irc5_robot_DO_64_bytes_Output_Layout; - - // Module abb_omnicore_robot/DO_64_bytes - abb_omnicore_robot_DO_64_bytes_Output AT %B0 : abb_omnicore_robot_DO_64_bytes_Output_Layout; - - END_STRUCT; - END_TYPE -END_NAMESPACE - +NAMESPACE AXOpen.Components.Abb.Robotics + TYPE + {S7.extern=ReadWrite} + {#ix-attr:[Container(Layout.Wrap)]} + Outputs : STRUCT + // Module abb_irc5_robot/DO_64_bytes + abb_irc5_robot_DO_64_bytes_Output AT %B64 : abb_irc5_robot_DO_64_bytes_Output_Layout; + + // Module abb_omnicore_robot/DO_64_bytes + abb_omnicore_robot_DO_64_bytes_Output AT %B0 : abb_omnicore_robot_DO_64_bytes_Output_Layout; + + END_STRUCT; + END_TYPE +END_NAMESPACE + From acf9c2f0bdb57fab628f166b354e73a5f92cae21 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:13:54 +0100 Subject: [PATCH 09/30] operonvars --- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../wwwroot/css/operon-variables.css | 610 +++++++++--------- .../src/wwwroot/css/operon-variables.css | 610 +++++++++--------- 30 files changed, 9150 insertions(+), 9150 deletions(-) diff --git a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css +++ b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css +++ b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css +++ b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css +++ b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css +++ b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} diff --git a/src/styling/src/wwwroot/css/operon-variables.css b/src/styling/src/wwwroot/css/operon-variables.css index 9b1f8b4d6..bd42276b1 100644 --- a/src/styling/src/wwwroot/css/operon-variables.css +++ b/src/styling/src/wwwroot/css/operon-variables.css @@ -1,305 +1,305 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; - --color-downtime-planned: #7DCDD2; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - - @keyframes pulse-danger { - 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); - } - - 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} +@layer theme { + :root, :host { + --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + } +} + +@layer base { + h1 { + @apply text-5xl text-text font-bold text-wrap wrap-break-word; + } + + h2 { + @apply text-4xl text-text font-bold text-wrap wrap-break-word; + } + + h3 { + @apply text-3xl text-text font-bold text-wrap wrap-break-word; + } + + h4 { + @apply text-2xl text-text font-bold text-wrap wrap-break-word; + } + + h5 { + @apply text-xl text-text font-normal text-wrap wrap-break-word; + } + + h6 { + @apply text-lg text-text font-normal text-wrap wrap-break-word; + } + + p { + @apply text-base text-text-light font-normal text-wrap wrap-break-word; + } + + a { + @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; + @apply text-link hover:text-link-hover; + } + + hr { + @apply text-text-light opacity-30; + } + + span { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + div { + @apply text-base text-text font-normal text-wrap wrap-break-word; + } + + /* input theme */ + input[type="date"], + input[type="time"], + input[type="datetime-local"] { + color-scheme: light; + } + + [data-theme="dark"] input[type="date"], + [data-theme="dark"] input[type="time"], + [data-theme="dark"] input[type="datetime-local"] { + color-scheme: dark; + } +} + +@theme { + --text-3xl--line-height: calc(2 / 1.5); + --text-4xl--line-height: calc(2 / 1.5); + --text-5xl--line-height: calc(2 / 1.5); + --text-6xl--line-height: calc(2 / 1.5); + --text-7xl--line-height: calc(2 / 1.5); + --text-8xl--line-height: calc(2 / 1.5); + --text-9xl--line-height: calc(2 / 1.5); + /* radius */ + --radius-full: calc(infinity * 1px); /* 0.25rem; */ + --radius-small: 1rem; + --radius-extra-small: var(--radius-md); + --radius-nav: var(--radius-small); + --radius-button: var(--radius-full); + --radius-action-button: var(--radius-small); + --radius-action-button-icon: var(--radius-small); + --radius-input: var(--radius-full); + --radius-textarea: var(--radius-small); + --radius-checkbox: var(--radius-extra-small); + --radius-toggle: var(--radius-full); + --radius-radio: var(--radius-full); + --radius-select: var(--radius-small); + --radius-file: var(--radius-small); + --radius-color: var(--radius-small); + --radius-picker: var(--radius-small); + --radius-card: var(--radius-small); + --radius-simple-border: var(--radius-small); + --radius-alert: var(--radius-small); + --radius-list-group: var(--radius-small); + --radius-tab: var(--radius-small); + --radius-dropdown: var(--radius-small); + --radius-modal: var(--radius-small); + --radius-tooltip: var(--radius-extra-small); + --radius-accordion: var(--radius-small); + --radius-toast: var(--radius-small); + --radius-table: var(--radius-full); + --radius-pagination-number: var(--radius-full); + /* #region Colors */ + --color-black: #0B0C0C; + --color-white: #FFFFFF; + --color-gray-1: #F3F2F1; + --color-gray-2: #DEE0E2; + --color-gray-3: #949494; + --color-background: #FEFEFE; + --color-background-light: #FFFFFF; + --color-background-dark: #F0F8FF; + --color-background-modal: #F5FAFF; + --color-background-modal-light: #FFFFFF; + --color-text: #0B0C0C; + --color-text-light: #626A6E; + --color-border: #BFC1C3; + --color-border-input: #0B0C0C; + /* #endregion */ + /* #region Links */ + --color-link: #0065B3; + --color-link-hover: #003078; + --color-link-visited: #4C2C92; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #0a319e; + --color-primary-light: #E0E8FF; + --color-success: #00703C; + --color-success-light: #D4F7D4; + --color-warning: #EC9811; + --color-warning-light: #FFEAC9; + --color-danger: #D0190F; + --color-danger-light: #FFDCDA; + --color-info: #2B8CC4; + --color-info-light: #D4ECF7; + --color-noactive: #7C7C7C; + --color-noactive-light: #DEE0E2; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #D0190F; + --color-result-passed: #00703C; + --color-result-inprogress: #0065B3; + --color-result-exclude: #7866B9; + --color-result-bypasse: #912B88; + --color-result-inconcllusive: #B58840; + --color-result-running: #00A2A3; + --color-result-noaction: #949494; + /* #end of result colors*/ + /* diagnostic colors */ + --color-diagnostic-debug: #0065B3; + --color-diagnostic-verbose: #769899; + --color-diagnostic-information: #2B8CC4; + --color-diagnostic-warning: #EC9811; + --color-diagnostic-error: #D0190F; + --color-diagnostic-fatal: #9E1912; + /* end of diagnostic colors */ + /* station status colors */ + --color-automat: #00703C; + --color-ground: #2B8CC4; + --color-grounded: #0065B3; + --color-idle: #949494; + --color-manual: #EC9811; + /* end of station status colors */ + /* prodinsight colors */ + --color-oee: #0A319E; + --color-availability: #00703C; + --color-performance: #0065B3; + --color-quality: #EC9811; + /* end of prodinsight colors */ + /* downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #EC9811; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #9885A9; + --color-downtime-planned: #7DCDD2; + /* end of downtime colors */ + /* buttons colors */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* end of buttons colors */ + --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; + + @keyframes pulse-danger { + 0%, 100% { + box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + } + + 50% { + box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + } + } +} + +[data-theme="dark"] { + /* #region Base colors */ + --color-black: #FFFFFF; + --color-white: #121212; + --color-gray-1: #1F1F1F; + --color-gray-2: #949494; + --color-gray-3: #F3F2F1; + --color-background: #121212; + --color-background-light: #1F1F1F; + --color-background-dark: #1F1F1F; + --color-background-modal: #1E1E1E; + --color-background-modal-light: #252525; + --color-text: #F2F2F2; + --color-text-light: #A3A3A3; + --color-border: #4B5563; + --color-border-input: #F2F2F2; + /* #endregion */ + /* #region Links */ + --color-link: #60A5FA; + --color-link-hover: #93C5FD; + --color-link-visited: #C4B5FD; + /* #endregion */ + /* #region Brand & semantic colors */ + --color-primary: #89C4FF; + --color-primary-light: #1e3a8a; + --color-success: #4ADE80; + --color-success-light: #14532d; + --color-warning: #FBBF24; + --color-warning-light: #78350f; + --color-danger: #F87171; + --color-danger-light: #7f1d1d; + --color-info: #38BDF8; + --color-info-light: #0c4a6e; + --color-noactive: #A1A1AA; + --color-noactive-light: #27272a; + /* #endregion */ + /* #region Result colors */ + --color-result-failed: #F87171; + --color-result-passed: #4ADE80; + --color-result-inprogress: #60A5FA; + --color-result-exclude: #A78BFA; + --color-result-bypasse: #E879F9; + --color-result-inconcllusive: #FCD34D; + --color-result-runnig: #2DD4BF; + --color-result-noaction: #A1A1AA; + /* #endregion */ + /* #region Diagnostic colors */ + --color-diagnostic-debug: #60A5FA; + --color-diagnostic-verbose: #5EEAD4; + --color-diagnostic-information: #38BDF8; + --color-diagnostic-warning: #FBBF24; + --color-diagnostic-error: #F87171; + --color-diagnostic-fatal: #EF4444; + /* #endregion */ + /* #region Station status colors */ + --color-automat: #4ADE80; + --color-ground: #38BDF8; + --color-grounded: #60A5FA; + --color-idle: #A1A1AA; + --color-manual: #FBBF24; + /* #endregion */ + /* #region ProdInsight colors */ + --color-oee: #89C4FF; + --color-availability: #B6D069; + --color-performance: #A08AE1; + --color-quality: #FBBF24; + /* #endregion */ + /* #region Downtime colors */ + --color-downtime-unassigned: #C7C7C7; + --color-downtime-material: #FBBF24; + --color-downtime-operator: #F08584; + --color-downtime-working: #B6D069; + --color-downtime-technical: #A08AE1; + --color-downtime-planned: #7DCDD2; + /* #endregion */ + /* #region Buttons */ + --color-btn-primary: var(--color-primary); + --color-btn-primary-hover: var(--color-primary-light); + --color-btn-danger: var(--color-danger); + --color-btn-danger-hover: var(--color-danger-light); + --color-btn-success: var(--color-success); + --color-btn-success-hover: var(--color-success-light); + --color-btn-warning: var(--color-warning); + --color-btn-warning-hover: var(--color-warning-light); + --color-btn-info: var(--color-info); + --color-btn-info-hover: var(--color-info-light); + --color-btn-noactive: var(--color-noactive); + --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-noactive-hover: #2A2A2A; + --color-btn-outline-bg: transparent; + --color-btn-no-bg-bg: transparent; + /* #endregion */ +} + +:root { + /* btn */ + --btn-hover-translate: -0.1rem; + +} From 74c184d0fe097e291a93bab074fea99ca02799ca Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:25:08 +0100 Subject: [PATCH 10/30] shell_scripts --- src/scripts/all.sh | 276 ++++++++--------- src/scripts/all_first.sh | 284 +++++++++--------- src/scripts/hw_first_download.sh | 190 ++++++------ src/scripts/setup_secure_communication.sh | 342 +++++++++++----------- 4 files changed, 546 insertions(+), 546 deletions(-) diff --git a/src/scripts/all.sh b/src/scripts/all.sh index 3eed5b82d..1d72d846a 100644 --- a/src/scripts/all.sh +++ b/src/scripts/all.sh @@ -1,138 +1,138 @@ -export GREEN='\033[0;32m' -export RED='\033[0;31m' -export YELLOW='\033[0;33m' -export NC='\033[0m\r\n' # No Color+CRLF -if [ "$#" -ne 7 ]; then - printf "${RED}Usage: $0 \r\n${NC}" - exit 1 -fi - -NAMESPACE=$1 -if [ -z $NAMESPACE ]; then - printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLC_NAME=$2 -if [ -z $PLC_NAME ]; then - printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLC_IP_ADDRESS=$3 -validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" -if ! $validate_script "$PLC_IP_ADDRESS"; then - printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" - exit 1 -fi - -PLATFORM=$4 -if [ -z $PLATFORM ]; then - printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" - exit 1 -fi - -USERNAME=$5 -if [ -z $USERNAME ]; then - printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" - exit 1 -fi - -PASSWORD=$6 -if [ -z $PASSWORD ]; then - printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" - exit 1 -fi - -USE_PLC_SIM_ADVANCED=$7 -if [ -z $USE_PLC_SIM_ADVANCED ]; then - printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLCSIM=0 -case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in - "true") - PLCSIM=1 - printf "${YELLOW} USE_PLC_SIM_ADVANCED is true. ${NC}" - ;; - "false") - PLCSIM=0 - printf "${YELLOW} USE_PLC_SIM_ADVANCED is false. ${NC}" - ;; - *) - printf "${RED}USE_PLC_SIM_ADVANCED has an invalid or undefined value: '$USE_PLC_SIM_ADVANCED'.${NC}" - ;; -esac - -certfile="./certs/$PLC_NAME/$PLC_NAME.cer" -if ! [[ -e "$certfile" ]]; then - printf "${RED}Certification file $certfile does not exist.\r\n${NC}" - #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw - alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" - $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED -else - check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" - if ! $check_requisites_apax_script ; then - exit 1 - fi - - check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" - if ! $check_requisites_nuget_script ; then - exit 1 - fi - - check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" - if ! $check_requisites_custom_registry_script ; then - exit 1 - fi - - if [ "$PLCSIM" -eq 1 ]; then - plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" - $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS - fi - - #apax run ci # clean and install dependencies - apax clean - apax install --catalog - apax install - - is_cert_hash_sha1_equal_script=$( dirname ${BASH_SOURCE[0]})"\\is_cert_hash_sha1_equal.sh" - - if ! $is_cert_hash_sha1_equal_script "$PLC_NAME" "$PLC_IP_ADDRESS"; then - printf "${RED}Certification file $certfile exists, but its sha1 hash is different to the PLC's one.\r\n" - printf "${RED}It has to be regenerated again.\r\n${NC}" - #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw -# alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" -# $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED - else - - printf "${GREEN}Certification file $certfile exists and its sha1 hash is equal to the PLC's one.\r\n" - printf "${GREEN}No prompt will popup during execution, so you could leave your PC and enjoy your coffee now.\r\n${NC}" - - - #hw_update # copy and install gsd, copy templates, compile, copy the HwIds, download HW using certificate - hw_update=$( dirname ${BASH_SOURCE[0]})"\\hw_update.sh" - $hw_update $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD - if [[ $? -eq 0 ]]; then - printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" - else - printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 - fi - - #sw_build_and_download_full # software build and full download - sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" - $sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD - if [[ $? -eq 0 ]]; then - printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" - else - printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 - fi - fi -fi - - +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF +if [ "$#" -ne 7 ]; then + printf "${RED}Usage: $0 \r\n${NC}" + exit 1 +fi + +NAMESPACE=$1 +if [ -z $NAMESPACE ]; then + printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_NAME=$2 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$3 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" + exit 1 +fi + +PLATFORM=$4 +if [ -z $PLATFORM ]; then + printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" + exit 1 +fi + +USERNAME=$5 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$6 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +USE_PLC_SIM_ADVANCED=$7 +if [ -z $USE_PLC_SIM_ADVANCED ]; then + printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLCSIM=0 +case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in + "true") + PLCSIM=1 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is true. ${NC}" + ;; + "false") + PLCSIM=0 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is false. ${NC}" + ;; + *) + printf "${RED}USE_PLC_SIM_ADVANCED has an invalid or undefined value: '$USE_PLC_SIM_ADVANCED'.${NC}" + ;; +esac + +certfile="./certs/$PLC_NAME/$PLC_NAME.cer" +if ! [[ -e "$certfile" ]]; then + printf "${RED}Certification file $certfile does not exist.\r\n${NC}" + #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw + alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" + $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED +else + check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" + if ! $check_requisites_apax_script ; then + exit 1 + fi + + check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" + if ! $check_requisites_nuget_script ; then + exit 1 + fi + + check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" + if ! $check_requisites_custom_registry_script ; then + exit 1 + fi + + if [ "$PLCSIM" -eq 1 ]; then + plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" + $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS + fi + + #apax run ci # clean and install dependencies + apax clean + apax install --catalog + apax install + + is_cert_hash_sha1_equal_script=$( dirname ${BASH_SOURCE[0]})"\\is_cert_hash_sha1_equal.sh" + + if ! $is_cert_hash_sha1_equal_script "$PLC_NAME" "$PLC_IP_ADDRESS"; then + printf "${RED}Certification file $certfile exists, but its sha1 hash is different to the PLC's one.\r\n" + printf "${RED}It has to be regenerated again.\r\n${NC}" + #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw +# alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" +# $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED + else + + printf "${GREEN}Certification file $certfile exists and its sha1 hash is equal to the PLC's one.\r\n" + printf "${GREEN}No prompt will popup during execution, so you could leave your PC and enjoy your coffee now.\r\n${NC}" + + + #hw_update # copy and install gsd, copy templates, compile, copy the HwIds, download HW using certificate + hw_update=$( dirname ${BASH_SOURCE[0]})"\\hw_update.sh" + $hw_update $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" + else + printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi + + #sw_build_and_download_full # software build and full download + sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" + $sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" + else + printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi + fi +fi + + diff --git a/src/scripts/all_first.sh b/src/scripts/all_first.sh index 124c00617..f27cc945e 100644 --- a/src/scripts/all_first.sh +++ b/src/scripts/all_first.sh @@ -1,142 +1,142 @@ -export GREEN='\033[0;32m' -export RED='\033[0;31m' -export YELLOW='\033[0;33m' -export NC='\033[0m\r\n' # No Color+CRLF - -# Function to validate password does not contain problematic shell characters -validate_password_safe_chars() { - local password="$1" - - # Check for problematic characters: $ ` \ " ' & | ; < > ( ) * ? [ ] { } or whitespace - if [[ "$password" =~ [\$\`\\\"\'\&\|\;\<\>\(\)\*\?\[\]\{\}[:space:]] ]]; then - return 1 - fi - return 0 -} - -if [ "$#" -ne 7 ]; then - printf "${RED}Usage: $0 \r\n${NC}" - exit 1 -fi - -NAMESPACE=$1 -if [ -z $NAMESPACE ]; then - printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLC_NAME=$2 -if [ -z $PLC_NAME ]; then - printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLC_IP_ADDRESS=$3 -validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" -if ! $validate_script "$PLC_IP_ADDRESS"; then - printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" - exit 1 -fi - -PLATFORM=$4 -if [ -z $PLATFORM ]; then - printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" - exit 1 -fi - -USERNAME=$5 -if [ -z $USERNAME ]; then - printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" - exit 1 -fi - -PASSWORD=$6 -if [ -z $PASSWORD ]; then - printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" - exit 1 -fi - -# Validate password does not contain problematic shell characters -if ! validate_password_safe_chars "$PASSWORD"; then - printf "${RED}The PASSWORD contains problematic characters.\r\n${NC}" - printf "${RED}Cannot use: \$ \` \\ \" ' & | ; < > ( ) * ? [ ] { } or whitespace\r\n${NC}" - exit 1 -fi - -USE_PLC_SIM_ADVANCED=$7 -if [ -z $USE_PLC_SIM_ADVANCED ]; then - printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" - exit 1 -fi - -PLCSIM=0 -case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in - "true") - PLCSIM=1 - printf "${YELLOW} USE_PLC_SIM_ADVANCED is true. ${NC}" - ;; - "false") - PLCSIM=0 - printf "${YELLOW} USE_PLC_SIM_ADVANCED is false. ${NC}" - ;; - *) - printf "${RED}USE_PLC_SIM_ADVANCED has an invalid or undefined value: '$USE_PLC_SIM_ADVANCED'.${NC}" - ;; -esac - -printf "${YELLOW}This command will prompt during execution, so do not leave your PC. You can enjoy your coffee afterward.\r\n${NC}" - -check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" -if ! $check_requisites_apax_script ; then - exit 1 -fi - -check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" -if ! $check_requisites_nuget_script ; then - exit 1 -fi - -check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" -if ! $check_requisites_custom_registry_script ; then - exit 1 -fi - - -if [ "$PLCSIM" -eq 1 ]; then - plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" - $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS -fi - -#apax run ci # clean and install dependencies -apax clean -apax install --catalog -apax install - -#clean_plc # total reset of the PLC excluding IP and name -clean_plc=$( dirname ${BASH_SOURCE[0]})"\\clean_plc.sh" -$clean_plc $PLC_IP_ADDRESS $USERNAME $PASSWORD - - -#hw_first_download # copy gsd, copy hwl, setup secure communication, compile, copy the HwIds, first download HW using password and upload certificate -hw_first_download=$( dirname ${BASH_SOURCE[0]})"\\hw_first_download.sh" -$hw_first_download $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD -if [[ $? -eq 0 ]]; then - printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" -else - printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi - -#sw_build_and_download_full # software build and full download -sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" -$sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD -if [[ $? -eq 0 ]]; then - printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" -else - printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi - - +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF + +# Function to validate password does not contain problematic shell characters +validate_password_safe_chars() { + local password="$1" + + # Check for problematic characters: $ ` \ " ' & | ; < > ( ) * ? [ ] { } or whitespace + if [[ "$password" =~ [\$\`\\\"\'\&\|\;\<\>\(\)\*\?\[\]\{\}[:space:]] ]]; then + return 1 + fi + return 0 +} + +if [ "$#" -ne 7 ]; then + printf "${RED}Usage: $0 \r\n${NC}" + exit 1 +fi + +NAMESPACE=$1 +if [ -z $NAMESPACE ]; then + printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_NAME=$2 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$3 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" + exit 1 +fi + +PLATFORM=$4 +if [ -z $PLATFORM ]; then + printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" + exit 1 +fi + +USERNAME=$5 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$6 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +# Validate password does not contain problematic shell characters +if ! validate_password_safe_chars "$PASSWORD"; then + printf "${RED}The PASSWORD contains problematic characters.\r\n${NC}" + printf "${RED}Cannot use: \$ \` \\ \" ' & | ; < > ( ) * ? [ ] { } or whitespace\r\n${NC}" + exit 1 +fi + +USE_PLC_SIM_ADVANCED=$7 +if [ -z $USE_PLC_SIM_ADVANCED ]; then + printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLCSIM=0 +case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in + "true") + PLCSIM=1 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is true. ${NC}" + ;; + "false") + PLCSIM=0 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is false. ${NC}" + ;; + *) + printf "${RED}USE_PLC_SIM_ADVANCED has an invalid or undefined value: '$USE_PLC_SIM_ADVANCED'.${NC}" + ;; +esac + +printf "${YELLOW}This command will prompt during execution, so do not leave your PC. You can enjoy your coffee afterward.\r\n${NC}" + +check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" +if ! $check_requisites_apax_script ; then + exit 1 +fi + +check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" +if ! $check_requisites_nuget_script ; then + exit 1 +fi + +check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" +if ! $check_requisites_custom_registry_script ; then + exit 1 +fi + + +if [ "$PLCSIM" -eq 1 ]; then + plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" + $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS +fi + +#apax run ci # clean and install dependencies +apax clean +apax install --catalog +apax install + +#clean_plc # total reset of the PLC excluding IP and name +clean_plc=$( dirname ${BASH_SOURCE[0]})"\\clean_plc.sh" +$clean_plc $PLC_IP_ADDRESS $USERNAME $PASSWORD + + +#hw_first_download # copy gsd, copy hwl, setup secure communication, compile, copy the HwIds, first download HW using password and upload certificate +hw_first_download=$( dirname ${BASH_SOURCE[0]})"\\hw_first_download.sh" +$hw_first_download $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD +if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" +else + printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#sw_build_and_download_full # software build and full download +sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" +$sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD +if [[ $? -eq 0 ]]; then + printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" +else + printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + + diff --git a/src/scripts/hw_first_download.sh b/src/scripts/hw_first_download.sh index f483f975e..ec47d5216 100644 --- a/src/scripts/hw_first_download.sh +++ b/src/scripts/hw_first_download.sh @@ -1,95 +1,95 @@ -export GREEN='\033[0;32m' -export RED='\033[0;31m' -export YELLOW='\033[0;33m' -export NC='\033[0m\r\n' # No Color+CRLF - -if [ "$#" -ne 5 ]; then - printf "${RED}Usage: $0 .${NC}" - exit 1 -fi - -NAMESPACE=$1 -if [ -z $NAMESPACE ]; then - printf "${RED}The NAMESPACE could not be an empty string.${NC}" - exit 1 -fi - -PLC_NAME=$2 -if [ -z $PLC_NAME ]; then - printf "${RED}The PLC_NAME could not be an empty string.${NC}" - exit 1 -fi - -PLC_IP_ADDRESS=$3 -validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" -if ! $validate_script "$PLC_IP_ADDRESS"; then - printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.${NC}" - exit 1 -fi - -USERNAME=$4 -if [ -z $USERNAME ]; then - printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" - exit 1 -fi - -PASSWORD=$5 -if [ -z $PASSWORD ]; then - printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" - exit 1 -fi - -#check hwc version -apax hwc --version -if [[ $? -eq 0 ]]; then - printf "${GREEN}hwc installed.${NC}" -else - printf "${YELLOW}hwc not installed!${NC}\n" - printf "${YELLOW}Trying to install the dependencies.${NC}\n" - apax install --catalog - apax install -fi - -#copy_and_install_gsd # copy and install all gsdml files from library -copy_and_install_gsd=$( dirname ${BASH_SOURCE[0]})"\\copy_and_install_gsd.sh" -$copy_and_install_gsd -if [[ $? -eq 0 ]]; then - printf "${GREEN}Gsdml files installed succesfully.${NC}" -else - printf "${RED}Installation of the gsdml files finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi - -#copy_hwl_templates # copy all templates from library -copy_hwl_templates=$( dirname ${BASH_SOURCE[0]})"\\copy_hwl_templates.sh" -$copy_hwl_templates -if [[ $? -eq 0 ]]; then - printf "${GREEN}Copying hardware templates from the libraries finished succesfully.${NC}" -else - printf "${RED}Copying hardware templates from the libraries finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi - -#setup_secure_communication # setup secure communication, create and import certificates, setup password for AX_USERNAME -setup_secure_communication=$( dirname ${BASH_SOURCE[0]})"\\setup_secure_communication.sh" -$setup_secure_communication $PLC_NAME $USERNAME $PASSWORD $PLC_IP_ADDRESS -if [[ $? -eq 0 ]]; then - printf "${GREEN}Configuring secure communication finished succesfully.${NC}" -else - printf "${RED}Configuring secure communication finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi - -#hw_first_compile_and_first_download # compile, copy the HwIds, first download HW using password and upload certificate -hw_first_compile_and_first_download=$( dirname ${BASH_SOURCE[0]})"\\hw_first_compile_and_first_download.sh" -$hw_first_compile_and_first_download $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD -if [[ $? -eq 0 ]]; then - printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" -else - printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" - exit 1 -fi +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF + +if [ "$#" -ne 5 ]; then + printf "${RED}Usage: $0 .${NC}" + exit 1 +fi + +NAMESPACE=$1 +if [ -z $NAMESPACE ]; then + printf "${RED}The NAMESPACE could not be an empty string.${NC}" + exit 1 +fi + +PLC_NAME=$2 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$3 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.${NC}" + exit 1 +fi + +USERNAME=$4 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$5 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +#check hwc version +apax hwc --version +if [[ $? -eq 0 ]]; then + printf "${GREEN}hwc installed.${NC}" +else + printf "${YELLOW}hwc not installed!${NC}\n" + printf "${YELLOW}Trying to install the dependencies.${NC}\n" + apax install --catalog + apax install +fi + +#copy_and_install_gsd # copy and install all gsdml files from library +copy_and_install_gsd=$( dirname ${BASH_SOURCE[0]})"\\copy_and_install_gsd.sh" +$copy_and_install_gsd +if [[ $? -eq 0 ]]; then + printf "${GREEN}Gsdml files installed succesfully.${NC}" +else + printf "${RED}Installation of the gsdml files finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#copy_hwl_templates # copy all templates from library +copy_hwl_templates=$( dirname ${BASH_SOURCE[0]})"\\copy_hwl_templates.sh" +$copy_hwl_templates +if [[ $? -eq 0 ]]; then + printf "${GREEN}Copying hardware templates from the libraries finished succesfully.${NC}" +else + printf "${RED}Copying hardware templates from the libraries finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#setup_secure_communication # setup secure communication, create and import certificates, setup password for AX_USERNAME +setup_secure_communication=$( dirname ${BASH_SOURCE[0]})"\\setup_secure_communication.sh" +$setup_secure_communication $PLC_NAME $USERNAME $PASSWORD $PLC_IP_ADDRESS +if [[ $? -eq 0 ]]; then + printf "${GREEN}Configuring secure communication finished succesfully.${NC}" +else + printf "${RED}Configuring secure communication finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#hw_first_compile_and_first_download # compile, copy the HwIds, first download HW using password and upload certificate +hw_first_compile_and_first_download=$( dirname ${BASH_SOURCE[0]})"\\hw_first_compile_and_first_download.sh" +$hw_first_compile_and_first_download $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD +if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" +else + printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi diff --git a/src/scripts/setup_secure_communication.sh b/src/scripts/setup_secure_communication.sh index 33dee65e9..56cd8e18b 100644 --- a/src/scripts/setup_secure_communication.sh +++ b/src/scripts/setup_secure_communication.sh @@ -1,172 +1,172 @@ -export GREEN='\033[0;32m' -export RED='\033[0;31m' -export YELLOW='\033[0;33m' -export NC='\033[0m\r\n' # No Color+CRLF -if [ "$#" -ne 4 ]; then - printf "${RED}Usage: $0 .${NC}" - exit 1 -fi - -PLC_NAME=$1 -if [ -z $PLC_NAME ]; then - printf "${RED}The PLC_NAME could not be an empty string.${NC}" - exit 1 -fi - -USERNAME=$2 -if [ -z $USERNAME ]; then - printf "${RED}The USERNAME could not be an empty string.${NC}" - exit 1 -fi - -PASSWORD=$3 -if [ -z $PASSWORD ]; then - printf "${RED}The PASSWORD could not be an empty string.${NC}" - exit 1 -fi - -IP_ADDRESS=$4 -validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" -if ! $validate_script "$IP_ADDRESS"; then - printf "${RED}The IP_ADDRESS '$IP_ADDRESS' is not a valid IP address.${NC}" - exit 1 -fi - -DNSNAME="" -URI="" - -if ! [[ -d "./hwc" ]]; then - printf "${RED}Directory ".\hwc" does not exist!!!${NC}" - exit 1 -fi - -hwcfile=".\hwc\\${PLC_NAME}.hwl.yml" -if [ ! -f $hwcfile ]; then - printf "${RED}Hardware configuration file $hwcfile does not exist!!!${NC}" - exit 1 -fi - -message="If you want to change the security configuration, you must delete it manually before triggering this command.${NC}" -file=".\hwc\hwc.gen\\${PLC_NAME}.SecurityConfiguration.json" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - printf "${YELLOW}${message}" - exit 1 -fi - -file="./certs/$PLC_NAME/containerWithPublicAndPrivateKeys_x509.p12" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - printf "${YELLOW}${message}" - exit 1 -fi - -file="./certs/$PLC_NAME/reference_x509.crt" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - printf "${YELLOW}${message}" - exit 1 -fi - -file="./certs/$PLC_NAME/$PLC_NAME.cer" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - printf "${YELLOW}${message}" - exit 1 -fi - -file="./certs/$PLC_NAME/privateKey.pem" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - rm $file - printf "${YELLOW}File '$file' deleted.${NC}" -fi - -file="./certs/$PLC_NAME/server.cert.pem" -if [ -f "$file" ]; then - printf "${YELLOW}File '$file' already exists.${NC}" - rm $file - printf "${YELLOW}File '$file' deleted.${NC}" -fi - -server_cert_ext="./certs/$PLC_NAME/server_cert_ext.cnf" -if [ -f "$server_cert_ext" ]; then - printf "${YELLOW}File '$server_cert_ext' already exists.${NC}" - rm $server_cert_ext - printf "${YELLOW}File '$server_cert_ext' deleted.${NC}" -fi - -if ! [[ -d "./certs" ]]; then - mkdir "./certs" - printf "Folder ./certs created.${NC}" -fi - -if ! [[ -d "./certs/$PLC_NAME" ]]; then - mkdir "./certs/$PLC_NAME" - printf "Folder ./certs/$PLC_NAME created.${NC}" -fi - -COMMON_NAME="${DNSNAME:-localhost}" -PKCS12_PASS_ARG="-passout pass:${PASSWORD}" -PKCS12_PASS_IN_ARG="-passin pass:${PASSWORD}" -#===== Write OpenSSL config ===== -cat > "$server_cert_ext" < .${NC}" + exit 1 +fi + +PLC_NAME=$1 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.${NC}" + exit 1 +fi + +USERNAME=$2 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.${NC}" + exit 1 +fi + +PASSWORD=$3 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.${NC}" + exit 1 +fi + +IP_ADDRESS=$4 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$IP_ADDRESS"; then + printf "${RED}The IP_ADDRESS '$IP_ADDRESS' is not a valid IP address.${NC}" + exit 1 +fi + +DNSNAME="" +URI="" + +if ! [[ -d "./hwc" ]]; then + printf "${RED}Directory ".\hwc" does not exist!!!${NC}" + exit 1 +fi + +hwcfile=".\hwc\\${PLC_NAME}.hwl.yml" +if [ ! -f $hwcfile ]; then + printf "${RED}Hardware configuration file $hwcfile does not exist!!!${NC}" + exit 1 +fi + +message="If you want to change the security configuration, you must delete it manually before triggering this command.${NC}" +file=".\hwc\hwc.gen\\${PLC_NAME}.SecurityConfiguration.json" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + printf "${YELLOW}${message}" + exit 1 +fi + +file="./certs/$PLC_NAME/containerWithPublicAndPrivateKeys_x509.p12" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + printf "${YELLOW}${message}" + exit 1 +fi + +file="./certs/$PLC_NAME/reference_x509.crt" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + printf "${YELLOW}${message}" + exit 1 +fi + +file="./certs/$PLC_NAME/$PLC_NAME.cer" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + printf "${YELLOW}${message}" + exit 1 +fi + +file="./certs/$PLC_NAME/privateKey.pem" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + rm $file + printf "${YELLOW}File '$file' deleted.${NC}" +fi + +file="./certs/$PLC_NAME/server.cert.pem" +if [ -f "$file" ]; then + printf "${YELLOW}File '$file' already exists.${NC}" + rm $file + printf "${YELLOW}File '$file' deleted.${NC}" +fi + +server_cert_ext="./certs/$PLC_NAME/server_cert_ext.cnf" +if [ -f "$server_cert_ext" ]; then + printf "${YELLOW}File '$server_cert_ext' already exists.${NC}" + rm $server_cert_ext + printf "${YELLOW}File '$server_cert_ext' deleted.${NC}" +fi + +if ! [[ -d "./certs" ]]; then + mkdir "./certs" + printf "Folder ./certs created.${NC}" +fi + +if ! [[ -d "./certs/$PLC_NAME" ]]; then + mkdir "./certs/$PLC_NAME" + printf "Folder ./certs/$PLC_NAME created.${NC}" +fi + +COMMON_NAME="${DNSNAME:-localhost}" +PKCS12_PASS_ARG="-passout pass:${PASSWORD}" +PKCS12_PASS_IN_ARG="-passin pass:${PASSWORD}" +#===== Write OpenSSL config ===== +cat > "$server_cert_ext" < Date: Tue, 17 Feb 2026 16:26:04 +0100 Subject: [PATCH 11/30] data_test_files --- .../ix/.g/Configurations.g.cs | 68 +- .../ix/.g/Onliners/DataExchange/Context.g.cs | 360 ++--- .../ix/.g/Onliners/Distributed/Context.g.cs | 604 ++++---- .../ExchangesWrappedInAxoObject.g.cs | 404 ++--- .../ix/.g/Onliners/FragmentData/Context.g.cs | 360 ++--- .../FragmentData/FragmentDataManager.g.cs | 366 ++--- .../ObjectWithPersistentMember.g.cs | 494 +++---- .../PersistentData/PersistentDataContext.g.cs | 404 ++--- .../PersistentData/PersistentRootObject.g.cs | 562 +++---- .../Primitives/InitializedPrimitives.g.cs | 1310 ++++++++--------- .../Primitives/PrimitivesDataEntity.g.cs | 1170 +++++++-------- .../Primitives/PrimitivesDataManager.g.cs | 318 ++-- .../SharedEntityHeader.g.cs | 368 ++--- .../SharedEntityHeaderManager.g.cs | 318 ++-- .../ix/.g/Onliners/configuration.g.cs | 12 +- .../ix/.g/Onliners/program.g.cs | 10 +- .../ix/.g/POCO/DataExchange/Context.g.cs | 40 +- .../ix/.g/POCO/Distributed/Context.g.cs | 50 +- .../ExchangesWrappedInAxoObject.g.cs | 42 +- .../ix/.g/POCO/FragmentData/Context.g.cs | 40 +- .../FragmentData/FragmentDataManager.g.cs | 40 +- .../ObjectWithPersistentMember.g.cs | 42 +- .../PersistentData/PersistentDataContext.g.cs | 42 +- .../PersistentData/PersistentRootObject.g.cs | 46 +- .../Primitives/InitializedPrimitives.g.cs | 94 +- .../POCO/Primitives/PrimitivesDataEntity.g.cs | 94 +- .../Primitives/PrimitivesDataManager.g.cs | 38 +- .../SharedEntityHeader.g.cs | 42 +- .../SharedEntityHeaderManager.g.cs | 38 +- .../ix/.g/POCO/StationData/StationData.g.cs | 38 +- .../POCO/StationData/StationDataManager.g.cs | 38 +- .../ix/.g/POCO/configuration.g.cs | 14 +- .../ix/.g/POCO/program.g.cs | 12 +- 33 files changed, 3939 insertions(+), 3939 deletions(-) diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs index d2152b6a0..7ea402ce4 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs @@ -1,35 +1,35 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; - -public partial class axopen_data_tests_l1TwinController : ITwinController -{ - public AXSharp.Connector.Connector Connector { get; } - public Tests_L1.DataExchange.DataExchangeContext DataExchange { get; } - public Tests_L1.FragmentData.FragmentDataContext Fragments { get; } - public Tests_L1.Distributed.DistributedDataContext Distributed { get; } - public Tests_L1.PersistentData.PersistentDataContext Persistent { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public axopen_data_tests_l1TwinController(AXSharp.Connector.ConnectorAdapter adapter, object[] parameters) - { - this.Connector = adapter.GetConnector(parameters); - DataExchange = new Tests_L1.DataExchange.DataExchangeContext(this.Connector, "", "DataExchange"); - Fragments = new Tests_L1.FragmentData.FragmentDataContext(this.Connector, "", "Fragments"); - Distributed = new Tests_L1.Distributed.DistributedDataContext(this.Connector, "", "Distributed"); - Persistent = new Tests_L1.PersistentData.PersistentDataContext(this.Connector, "", "Persistent"); - } - - public axopen_data_tests_l1TwinController(AXSharp.Connector.ConnectorAdapter adapter) - { - this.Connector = adapter.GetConnector(adapter.Parameters); - DataExchange = new Tests_L1.DataExchange.DataExchangeContext(this.Connector, "", "DataExchange"); - Fragments = new Tests_L1.FragmentData.FragmentDataContext(this.Connector, "", "Fragments"); - Distributed = new Tests_L1.Distributed.DistributedDataContext(this.Connector, "", "Distributed"); - Persistent = new Tests_L1.PersistentData.PersistentDataContext(this.Connector, "", "Persistent"); - } +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; + +public partial class axopen_data_tests_l1TwinController : ITwinController +{ + public AXSharp.Connector.Connector Connector { get; } + public Tests_L1.DataExchange.DataExchangeContext DataExchange { get; } + public Tests_L1.FragmentData.FragmentDataContext Fragments { get; } + public Tests_L1.Distributed.DistributedDataContext Distributed { get; } + public Tests_L1.PersistentData.PersistentDataContext Persistent { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public axopen_data_tests_l1TwinController(AXSharp.Connector.ConnectorAdapter adapter, object[] parameters) + { + this.Connector = adapter.GetConnector(parameters); + DataExchange = new Tests_L1.DataExchange.DataExchangeContext(this.Connector, "", "DataExchange"); + Fragments = new Tests_L1.FragmentData.FragmentDataContext(this.Connector, "", "Fragments"); + Distributed = new Tests_L1.Distributed.DistributedDataContext(this.Connector, "", "Distributed"); + Persistent = new Tests_L1.PersistentData.PersistentDataContext(this.Connector, "", "Persistent"); + } + + public axopen_data_tests_l1TwinController(AXSharp.Connector.ConnectorAdapter adapter) + { + this.Connector = adapter.GetConnector(adapter.Parameters); + DataExchange = new Tests_L1.DataExchange.DataExchangeContext(this.Connector, "", "DataExchange"); + Fragments = new Tests_L1.FragmentData.FragmentDataContext(this.Connector, "", "Fragments"); + Distributed = new Tests_L1.Distributed.DistributedDataContext(this.Connector, "", "Distributed"); + Persistent = new Tests_L1.PersistentData.PersistentDataContext(this.Connector, "", "Persistent"); + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs index 198eb34e6..20a5fb12d 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs @@ -1,185 +1,185 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.DataExchange -{ - public partial class DataExchangeContext : AXOpen.Core.AxoContext - { - public AXOpen.Core.AxoObject _rootObject { get; } - public Tests_L1.SharedEntityHeaderManager SharedHeaderManager { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public DataExchangeContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); - SharedHeaderManager = new Tests_L1.SharedEntityHeaderManager(this, "SharedHeaderManager", "SharedHeaderManager"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.SharedHeaderManager._PlainToOnlineNoacAsync(plain.SharedHeaderManager); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.SharedHeaderManager._PlainToOnlineNoacAsync(plain.SharedHeaderManager); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.SharedHeaderManager = await SharedHeaderManager.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) - { - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.SharedHeaderManager = await SharedHeaderManager.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) - { - await base.PlainToShadowAsync(plain); - await this._rootObject.PlainToShadowAsync(plain._rootObject); - await this.SharedHeaderManager.PlainToShadowAsync(plain.SharedHeaderManager); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.DataExchange +{ + public partial class DataExchangeContext : AXOpen.Core.AxoContext + { + public AXOpen.Core.AxoObject _rootObject { get; } + public Tests_L1.SharedEntityHeaderManager SharedHeaderManager { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public DataExchangeContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); + SharedHeaderManager = new Tests_L1.SharedEntityHeaderManager(this, "SharedHeaderManager", "SharedHeaderManager"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.SharedHeaderManager = await SharedHeaderManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.SharedHeaderManager._PlainToOnlineNoacAsync(plain.SharedHeaderManager); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.SharedHeaderManager._PlainToOnlineNoacAsync(plain.SharedHeaderManager); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain = new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.SharedHeaderManager = await SharedHeaderManager.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) + { + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.SharedHeaderManager = await SharedHeaderManager.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain) + { + await base.PlainToShadowAsync(plain); + await this._rootObject.PlainToShadowAsync(plain._rootObject); + await this.SharedHeaderManager.PlainToShadowAsync(plain.SharedHeaderManager); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain, global::Pocos.Tests_L1.DataExchange.DataExchangeContext latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) - somethingChanged = true; - if (await SharedHeaderManager.DetectsAnyChangeAsync(plain.SharedHeaderManager, latest.SharedHeaderManager)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.DataExchange.DataExchangeContext CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.DataExchange.DataExchangeContext plain, global::Pocos.Tests_L1.DataExchange.DataExchangeContext latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) + somethingChanged = true; + if (await SharedHeaderManager.DetectsAnyChangeAsync(plain.SharedHeaderManager, latest.SharedHeaderManager)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.DataExchange.DataExchangeContext CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.DataExchange.DataExchangeContext(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs index 2610d7e7d..70bd345f6 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs @@ -1,307 +1,307 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.Distributed -{ - public partial class DistributedDataContext : AXOpen.Core.AxoContext - { - public AXOpen.Core.AxoObject _rootObject { get; } - - [AXOpen.Data.DistributedDataAttribute("Group_1")] - public Tests_L1.SharedEntityHeaderManager HeaderManager_1 { get; } - - [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2")] - public Tests_L1.SharedEntityHeaderManager HeaderManager_2 { get; } - - [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2", "Group_3")] - public Tests_L1.StationDataManager StationManager_1 { get; } - - [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2", "Group_3", "Group_4")] - public Tests_L1.StationDataManager StationManager_2 { get; } - - [AXOpen.Data.DistributedDataAttribute("AxoDataFragmentExchange")] - public Tests_L1.FragmentData.FragmentProcessDataManager Fragment { get; } - - [AXOpen.Data.DistributedDataAttribute("AxoObjectWrap")] - public Tests_L1.Distributed.ExchangesWrappedInAxoObject AxoProcess { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public DistributedDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); - HeaderManager_1 = new Tests_L1.SharedEntityHeaderManager(this, "HeaderManager_1", "HeaderManager_1"); - HeaderManager_2 = new Tests_L1.SharedEntityHeaderManager(this, "HeaderManager_2", "HeaderManager_2"); - StationManager_1 = new Tests_L1.StationDataManager(this, "StationManager_1", "StationManager_1"); - StationManager_2 = new Tests_L1.StationDataManager(this, "StationManager_2", "StationManager_2"); - Fragment = new Tests_L1.FragmentData.FragmentProcessDataManager(this, "Fragment", "Fragment"); - AxoProcess = new Tests_L1.Distributed.ExchangesWrappedInAxoObject(this, "AxoProcess", "AxoProcess"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.HeaderManager_1._PlainToOnlineNoacAsync(plain.HeaderManager_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.HeaderManager_2._PlainToOnlineNoacAsync(plain.HeaderManager_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.StationManager_1._PlainToOnlineNoacAsync(plain.StationManager_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.StationManager_2._PlainToOnlineNoacAsync(plain.StationManager_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Fragment._PlainToOnlineNoacAsync(plain.Fragment); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.AxoProcess._PlainToOnlineNoacAsync(plain.AxoProcess); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.HeaderManager_1._PlainToOnlineNoacAsync(plain.HeaderManager_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.HeaderManager_2._PlainToOnlineNoacAsync(plain.HeaderManager_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.StationManager_1._PlainToOnlineNoacAsync(plain.StationManager_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.StationManager_2._PlainToOnlineNoacAsync(plain.StationManager_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Fragment._PlainToOnlineNoacAsync(plain.Fragment); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.AxoProcess._PlainToOnlineNoacAsync(plain.AxoProcess); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.HeaderManager_1 = await HeaderManager_1.ShadowToPlainAsync(); - plain.HeaderManager_2 = await HeaderManager_2.ShadowToPlainAsync(); - plain.StationManager_1 = await StationManager_1.ShadowToPlainAsync(); - plain.StationManager_2 = await StationManager_2.ShadowToPlainAsync(); - plain.Fragment = await Fragment.ShadowToPlainAsync(); - plain.AxoProcess = await AxoProcess.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) - { - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.HeaderManager_1 = await HeaderManager_1.ShadowToPlainAsync(); - plain.HeaderManager_2 = await HeaderManager_2.ShadowToPlainAsync(); - plain.StationManager_1 = await StationManager_1.ShadowToPlainAsync(); - plain.StationManager_2 = await StationManager_2.ShadowToPlainAsync(); - plain.Fragment = await Fragment.ShadowToPlainAsync(); - plain.AxoProcess = await AxoProcess.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) - { - await base.PlainToShadowAsync(plain); - await this._rootObject.PlainToShadowAsync(plain._rootObject); - await this.HeaderManager_1.PlainToShadowAsync(plain.HeaderManager_1); - await this.HeaderManager_2.PlainToShadowAsync(plain.HeaderManager_2); - await this.StationManager_1.PlainToShadowAsync(plain.StationManager_1); - await this.StationManager_2.PlainToShadowAsync(plain.StationManager_2); - await this.Fragment.PlainToShadowAsync(plain.Fragment); - await this.AxoProcess.PlainToShadowAsync(plain.AxoProcess); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.Distributed +{ + public partial class DistributedDataContext : AXOpen.Core.AxoContext + { + public AXOpen.Core.AxoObject _rootObject { get; } + + [AXOpen.Data.DistributedDataAttribute("Group_1")] + public Tests_L1.SharedEntityHeaderManager HeaderManager_1 { get; } + + [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2")] + public Tests_L1.SharedEntityHeaderManager HeaderManager_2 { get; } + + [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2", "Group_3")] + public Tests_L1.StationDataManager StationManager_1 { get; } + + [AXOpen.Data.DistributedDataAttribute("Group_1", "Group_2", "Group_3", "Group_4")] + public Tests_L1.StationDataManager StationManager_2 { get; } + + [AXOpen.Data.DistributedDataAttribute("AxoDataFragmentExchange")] + public Tests_L1.FragmentData.FragmentProcessDataManager Fragment { get; } + + [AXOpen.Data.DistributedDataAttribute("AxoObjectWrap")] + public Tests_L1.Distributed.ExchangesWrappedInAxoObject AxoProcess { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public DistributedDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); + HeaderManager_1 = new Tests_L1.SharedEntityHeaderManager(this, "HeaderManager_1", "HeaderManager_1"); + HeaderManager_2 = new Tests_L1.SharedEntityHeaderManager(this, "HeaderManager_2", "HeaderManager_2"); + StationManager_1 = new Tests_L1.StationDataManager(this, "StationManager_1", "StationManager_1"); + StationManager_2 = new Tests_L1.StationDataManager(this, "StationManager_2", "StationManager_2"); + Fragment = new Tests_L1.FragmentData.FragmentProcessDataManager(this, "Fragment", "Fragment"); + AxoProcess = new Tests_L1.Distributed.ExchangesWrappedInAxoObject(this, "AxoProcess", "AxoProcess"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_1 = await HeaderManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.HeaderManager_2 = await HeaderManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_1 = await StationManager_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.StationManager_2 = await StationManager_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Fragment = await Fragment._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.AxoProcess = await AxoProcess._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.HeaderManager_1._PlainToOnlineNoacAsync(plain.HeaderManager_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.HeaderManager_2._PlainToOnlineNoacAsync(plain.HeaderManager_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.StationManager_1._PlainToOnlineNoacAsync(plain.StationManager_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.StationManager_2._PlainToOnlineNoacAsync(plain.StationManager_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Fragment._PlainToOnlineNoacAsync(plain.Fragment); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.AxoProcess._PlainToOnlineNoacAsync(plain.AxoProcess); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.HeaderManager_1._PlainToOnlineNoacAsync(plain.HeaderManager_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.HeaderManager_2._PlainToOnlineNoacAsync(plain.HeaderManager_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.StationManager_1._PlainToOnlineNoacAsync(plain.StationManager_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.StationManager_2._PlainToOnlineNoacAsync(plain.StationManager_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Fragment._PlainToOnlineNoacAsync(plain.Fragment); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.AxoProcess._PlainToOnlineNoacAsync(plain.AxoProcess); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.Distributed.DistributedDataContext plain = new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.HeaderManager_1 = await HeaderManager_1.ShadowToPlainAsync(); + plain.HeaderManager_2 = await HeaderManager_2.ShadowToPlainAsync(); + plain.StationManager_1 = await StationManager_1.ShadowToPlainAsync(); + plain.StationManager_2 = await StationManager_2.ShadowToPlainAsync(); + plain.Fragment = await Fragment.ShadowToPlainAsync(); + plain.AxoProcess = await AxoProcess.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) + { + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.HeaderManager_1 = await HeaderManager_1.ShadowToPlainAsync(); + plain.HeaderManager_2 = await HeaderManager_2.ShadowToPlainAsync(); + plain.StationManager_1 = await StationManager_1.ShadowToPlainAsync(); + plain.StationManager_2 = await StationManager_2.ShadowToPlainAsync(); + plain.Fragment = await Fragment.ShadowToPlainAsync(); + plain.AxoProcess = await AxoProcess.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain) + { + await base.PlainToShadowAsync(plain); + await this._rootObject.PlainToShadowAsync(plain._rootObject); + await this.HeaderManager_1.PlainToShadowAsync(plain.HeaderManager_1); + await this.HeaderManager_2.PlainToShadowAsync(plain.HeaderManager_2); + await this.StationManager_1.PlainToShadowAsync(plain.StationManager_1); + await this.StationManager_2.PlainToShadowAsync(plain.StationManager_2); + await this.Fragment.PlainToShadowAsync(plain.Fragment); + await this.AxoProcess.PlainToShadowAsync(plain.AxoProcess); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain, global::Pocos.Tests_L1.Distributed.DistributedDataContext latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) - somethingChanged = true; - if (await HeaderManager_1.DetectsAnyChangeAsync(plain.HeaderManager_1, latest.HeaderManager_1)) - somethingChanged = true; - if (await HeaderManager_2.DetectsAnyChangeAsync(plain.HeaderManager_2, latest.HeaderManager_2)) - somethingChanged = true; - if (await StationManager_1.DetectsAnyChangeAsync(plain.StationManager_1, latest.StationManager_1)) - somethingChanged = true; - if (await StationManager_2.DetectsAnyChangeAsync(plain.StationManager_2, latest.StationManager_2)) - somethingChanged = true; - if (await Fragment.DetectsAnyChangeAsync(plain.Fragment, latest.Fragment)) - somethingChanged = true; - if (await AxoProcess.DetectsAnyChangeAsync(plain.AxoProcess, latest.AxoProcess)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.Distributed.DistributedDataContext CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Distributed.DistributedDataContext plain, global::Pocos.Tests_L1.Distributed.DistributedDataContext latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) + somethingChanged = true; + if (await HeaderManager_1.DetectsAnyChangeAsync(plain.HeaderManager_1, latest.HeaderManager_1)) + somethingChanged = true; + if (await HeaderManager_2.DetectsAnyChangeAsync(plain.HeaderManager_2, latest.HeaderManager_2)) + somethingChanged = true; + if (await StationManager_1.DetectsAnyChangeAsync(plain.StationManager_1, latest.StationManager_1)) + somethingChanged = true; + if (await StationManager_2.DetectsAnyChangeAsync(plain.StationManager_2, latest.StationManager_2)) + somethingChanged = true; + if (await Fragment.DetectsAnyChangeAsync(plain.Fragment, latest.Fragment)) + somethingChanged = true; + if (await AxoProcess.DetectsAnyChangeAsync(plain.AxoProcess, latest.AxoProcess)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.Distributed.DistributedDataContext CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.Distributed.DistributedDataContext(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs index 95ec3d31f..96d4a2cf2 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs @@ -1,207 +1,207 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.Distributed -{ - public partial class ExchangesWrappedInAxoObject : AXOpen.Core.AxoObject - { - public Tests_L1.SharedEntityHeaderManager Header { get; } - public Tests_L1.StationDataManager Station_1 { get; } - public Tests_L1.StationDataManager Station_2 { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public ExchangesWrappedInAxoObject(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - Header = new Tests_L1.SharedEntityHeaderManager(this, "Header", "Header"); - Station_1 = new Tests_L1.StationDataManager(this, "Station_1", "Station_1"); - Station_2 = new Tests_L1.StationDataManager(this, "Station_2", "Station_2"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Header = await Header._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Header = await Header._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Header = await Header._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Header._PlainToOnlineNoacAsync(plain.Header); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station_1._PlainToOnlineNoacAsync(plain.Station_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station_2._PlainToOnlineNoacAsync(plain.Station_2); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Header._PlainToOnlineNoacAsync(plain.Header); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station_1._PlainToOnlineNoacAsync(plain.Station_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station_2._PlainToOnlineNoacAsync(plain.Station_2); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); - await base.ShadowToPlainAsync(plain); - plain.Header = await Header.ShadowToPlainAsync(); - plain.Station_1 = await Station_1.ShadowToPlainAsync(); - plain.Station_2 = await Station_2.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) - { - await base.ShadowToPlainAsync(plain); - plain.Header = await Header.ShadowToPlainAsync(); - plain.Station_1 = await Station_1.ShadowToPlainAsync(); - plain.Station_2 = await Station_2.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) - { - await base.PlainToShadowAsync(plain); - await this.Header.PlainToShadowAsync(plain.Header); - await this.Station_1.PlainToShadowAsync(plain.Station_1); - await this.Station_2.PlainToShadowAsync(plain.Station_2); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.Distributed +{ + public partial class ExchangesWrappedInAxoObject : AXOpen.Core.AxoObject + { + public Tests_L1.SharedEntityHeaderManager Header { get; } + public Tests_L1.StationDataManager Station_1 { get; } + public Tests_L1.StationDataManager Station_2 { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public ExchangesWrappedInAxoObject(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + Header = new Tests_L1.SharedEntityHeaderManager(this, "Header", "Header"); + Station_1 = new Tests_L1.StationDataManager(this, "Station_1", "Station_1"); + Station_2 = new Tests_L1.StationDataManager(this, "Station_2", "Station_2"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Header = await Header._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Header = await Header._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Header = await Header._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_1 = await Station_1._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station_2 = await Station_2._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Header._PlainToOnlineNoacAsync(plain.Header); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station_1._PlainToOnlineNoacAsync(plain.Station_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station_2._PlainToOnlineNoacAsync(plain.Station_2); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Header._PlainToOnlineNoacAsync(plain.Header); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station_1._PlainToOnlineNoacAsync(plain.Station_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station_2._PlainToOnlineNoacAsync(plain.Station_2); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain = new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); + await base.ShadowToPlainAsync(plain); + plain.Header = await Header.ShadowToPlainAsync(); + plain.Station_1 = await Station_1.ShadowToPlainAsync(); + plain.Station_2 = await Station_2.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) + { + await base.ShadowToPlainAsync(plain); + plain.Header = await Header.ShadowToPlainAsync(); + plain.Station_1 = await Station_1.ShadowToPlainAsync(); + plain.Station_2 = await Station_2.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain) + { + await base.PlainToShadowAsync(plain); + await this.Header.PlainToShadowAsync(plain.Header); + await this.Station_1.PlainToShadowAsync(plain.Station_1); + await this.Station_2.PlainToShadowAsync(plain.Station_2); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain, global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await Header.DetectsAnyChangeAsync(plain.Header, latest.Header)) - somethingChanged = true; - if (await Station_1.DetectsAnyChangeAsync(plain.Station_1, latest.Station_1)) - somethingChanged = true; - if (await Station_2.DetectsAnyChangeAsync(plain.Station_2, latest.Station_2)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject plain, global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await Header.DetectsAnyChangeAsync(plain.Header, latest.Header)) + somethingChanged = true; + if (await Station_1.DetectsAnyChangeAsync(plain.Station_1, latest.Station_1)) + somethingChanged = true; + if (await Station_2.DetectsAnyChangeAsync(plain.Station_2, latest.Station_2)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.Distributed.ExchangesWrappedInAxoObject(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs index 0c9069107..b6e04ef49 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs @@ -1,185 +1,185 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.FragmentData -{ - public partial class FragmentDataContext : AXOpen.Core.AxoContext - { - public AXOpen.Core.AxoObject _rootObject { get; } - public Tests_L1.FragmentData.FragmentProcessDataManager DataManager { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public FragmentDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); - DataManager = new Tests_L1.FragmentData.FragmentProcessDataManager(this, "DataManager", "DataManager"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.DataManager = await DataManager.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) - { - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.DataManager = await DataManager.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) - { - await base.PlainToShadowAsync(plain); - await this._rootObject.PlainToShadowAsync(plain._rootObject); - await this.DataManager.PlainToShadowAsync(plain.DataManager); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.FragmentData +{ + public partial class FragmentDataContext : AXOpen.Core.AxoContext + { + public AXOpen.Core.AxoObject _rootObject { get; } + public Tests_L1.FragmentData.FragmentProcessDataManager DataManager { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public FragmentDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); + DataManager = new Tests_L1.FragmentData.FragmentProcessDataManager(this, "DataManager", "DataManager"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain = new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.DataManager = await DataManager.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) + { + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.DataManager = await DataManager.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain) + { + await base.PlainToShadowAsync(plain); + await this._rootObject.PlainToShadowAsync(plain._rootObject); + await this.DataManager.PlainToShadowAsync(plain.DataManager); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain, global::Pocos.Tests_L1.FragmentData.FragmentDataContext latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) - somethingChanged = true; - if (await DataManager.DetectsAnyChangeAsync(plain.DataManager, latest.DataManager)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.FragmentData.FragmentDataContext CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.FragmentData.FragmentDataContext plain, global::Pocos.Tests_L1.FragmentData.FragmentDataContext latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) + somethingChanged = true; + if (await DataManager.DetectsAnyChangeAsync(plain.DataManager, latest.DataManager)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.FragmentData.FragmentDataContext CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.FragmentData.FragmentDataContext(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs index 62f9cdc56..4de915287 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs @@ -1,188 +1,188 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.FragmentData -{ - public partial class FragmentProcessDataManager : AXOpen.Data.AxoDataFragmentExchange - { - [AXOpen.Data.AxoDataFragmentAttribute] - public Tests_L1.SharedEntityHeaderManager EntityHeader { get; } - - [AXOpen.Data.AxoDataFragmentAttribute] - public Tests_L1.StationDataManager Station { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public FragmentProcessDataManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - EntityHeader = new Tests_L1.SharedEntityHeaderManager(this, "EntityHeader", "EntityHeader"); - Station = new Tests_L1.StationDataManager(this, "Station", "Station"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station = await Station._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station = await Station._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Station = await Station._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.EntityHeader._PlainToOnlineNoacAsync(plain.EntityHeader); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station._PlainToOnlineNoacAsync(plain.Station); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.EntityHeader._PlainToOnlineNoacAsync(plain.EntityHeader); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.Station._PlainToOnlineNoacAsync(plain.Station); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); - await base.ShadowToPlainAsync(plain); - plain.EntityHeader = await EntityHeader.ShadowToPlainAsync(); - plain.Station = await Station.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) - { - await base.ShadowToPlainAsync(plain); - plain.EntityHeader = await EntityHeader.ShadowToPlainAsync(); - plain.Station = await Station.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) - { - await base.PlainToShadowAsync(plain); - await this.EntityHeader.PlainToShadowAsync(plain.EntityHeader); - await this.Station.PlainToShadowAsync(plain.Station); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.FragmentData +{ + public partial class FragmentProcessDataManager : AXOpen.Data.AxoDataFragmentExchange + { + [AXOpen.Data.AxoDataFragmentAttribute] + public Tests_L1.SharedEntityHeaderManager EntityHeader { get; } + + [AXOpen.Data.AxoDataFragmentAttribute] + public Tests_L1.StationDataManager Station { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public FragmentProcessDataManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + EntityHeader = new Tests_L1.SharedEntityHeaderManager(this, "EntityHeader", "EntityHeader"); + Station = new Tests_L1.StationDataManager(this, "Station", "Station"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station = await Station._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station = await Station._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.EntityHeader = await EntityHeader._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Station = await Station._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.EntityHeader._PlainToOnlineNoacAsync(plain.EntityHeader); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station._PlainToOnlineNoacAsync(plain.Station); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.EntityHeader._PlainToOnlineNoacAsync(plain.EntityHeader); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.Station._PlainToOnlineNoacAsync(plain.Station); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain = new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); + await base.ShadowToPlainAsync(plain); + plain.EntityHeader = await EntityHeader.ShadowToPlainAsync(); + plain.Station = await Station.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) + { + await base.ShadowToPlainAsync(plain); + plain.EntityHeader = await EntityHeader.ShadowToPlainAsync(); + plain.Station = await Station.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain) + { + await base.PlainToShadowAsync(plain); + await this.EntityHeader.PlainToShadowAsync(plain.EntityHeader); + await this.Station.PlainToShadowAsync(plain.Station); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain, global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await EntityHeader.DetectsAnyChangeAsync(plain.EntityHeader, latest.EntityHeader)) - somethingChanged = true; - if (await Station.DetectsAnyChangeAsync(plain.Station, latest.Station)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager plain, global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await EntityHeader.DetectsAnyChangeAsync(plain.EntityHeader, latest.EntityHeader)) + somethingChanged = true; + if (await Station.DetectsAnyChangeAsync(plain.Station, latest.Station)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.FragmentData.FragmentProcessDataManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs index de730b8f7..04f1c3814 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs @@ -1,252 +1,252 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen; -using AXOpen.Data; - -namespace Tests_L1.PersistentData -{ - public partial class ObjectWithPersistentMember : AXSharp.Connector.ITwinObject - { - public OnlinerInt NotPersistentVariable { get; } - - [Persistent("2")] - public Tests_L1.Primitives.InitializedPrimitives InitializedPrimitives { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public ObjectWithPersistentMember(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - this.@SymbolTail = symbolTail; - this.@Connector = parent.GetConnector(); - this.@Parent = parent; - HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); - PreConstruct(parent, readableTail, symbolTail); - NotPersistentVariable = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "NotPersistentVariable", "NotPersistentVariable"); - InitializedPrimitives = new Tests_L1.Primitives.InitializedPrimitives(this, "InitializedPrimitives", "InitializedPrimitives"); - parent.AddChild(this); - parent.AddKid(this); - PostConstruct(parent, readableTail, symbolTail); - } - - public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); - await this.ReadAsync(priority); - plain.NotPersistentVariable = NotPersistentVariable.LastValue; -#pragma warning disable CS0612 - plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); - plain.NotPersistentVariable = NotPersistentVariable.LastValue; -#pragma warning disable CS0612 - plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) - { - plain.NotPersistentVariable = NotPersistentVariable.LastValue; -#pragma warning disable CS0612 - plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain, eAccessPriority priority = eAccessPriority.Normal) - { -#pragma warning disable CS0612 - NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.InitializedPrimitives._PlainToOnlineNoacAsync(plain.InitializedPrimitives); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) - { -#pragma warning disable CS0612 - NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.InitializedPrimitives._PlainToOnlineNoacAsync(plain.InitializedPrimitives); -#pragma warning restore CS0612 - } - - public async virtual Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); - plain.NotPersistentVariable = NotPersistentVariable.Shadow; - plain.InitializedPrimitives = await InitializedPrimitives.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) - { - plain.NotPersistentVariable = NotPersistentVariable.Shadow; - plain.InitializedPrimitives = await InitializedPrimitives.ShadowToPlainAsync(); - return plain; - } - - public async virtual Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) - { - NotPersistentVariable.Shadow = plain.NotPersistentVariable; - await this.InitializedPrimitives.PlainToShadowAsync(plain.InitializedPrimitives); - return this.RetrievePrimitives(); - } - - /// - public async virtual Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen; +using AXOpen.Data; + +namespace Tests_L1.PersistentData +{ + public partial class ObjectWithPersistentMember : AXSharp.Connector.ITwinObject + { + public OnlinerInt NotPersistentVariable { get; } + + [Persistent("2")] + public Tests_L1.Primitives.InitializedPrimitives InitializedPrimitives { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public ObjectWithPersistentMember(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + this.@SymbolTail = symbolTail; + this.@Connector = parent.GetConnector(); + this.@Parent = parent; + HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); + PreConstruct(parent, readableTail, symbolTail); + NotPersistentVariable = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "NotPersistentVariable", "NotPersistentVariable"); + InitializedPrimitives = new Tests_L1.Primitives.InitializedPrimitives(this, "InitializedPrimitives", "InitializedPrimitives"); + parent.AddChild(this); + parent.AddKid(this); + PostConstruct(parent, readableTail, symbolTail); + } + + public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); + await this.ReadAsync(priority); + plain.NotPersistentVariable = NotPersistentVariable.LastValue; +#pragma warning disable CS0612 + plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); + plain.NotPersistentVariable = NotPersistentVariable.LastValue; +#pragma warning disable CS0612 + plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) + { + plain.NotPersistentVariable = NotPersistentVariable.LastValue; +#pragma warning disable CS0612 + plain.InitializedPrimitives = await InitializedPrimitives._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain, eAccessPriority priority = eAccessPriority.Normal) + { +#pragma warning disable CS0612 + NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.InitializedPrimitives._PlainToOnlineNoacAsync(plain.InitializedPrimitives); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) + { +#pragma warning disable CS0612 + NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.InitializedPrimitives._PlainToOnlineNoacAsync(plain.InitializedPrimitives); +#pragma warning restore CS0612 + } + + public async virtual Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain = new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); + plain.NotPersistentVariable = NotPersistentVariable.Shadow; + plain.InitializedPrimitives = await InitializedPrimitives.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) + { + plain.NotPersistentVariable = NotPersistentVariable.Shadow; + plain.InitializedPrimitives = await InitializedPrimitives.ShadowToPlainAsync(); + return plain; + } + + public async virtual Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain) + { + NotPersistentVariable.Shadow = plain.NotPersistentVariable; + await this.InitializedPrimitives.PlainToShadowAsync(plain.InitializedPrimitives); + return this.RetrievePrimitives(); + } + + /// + public async virtual Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain, global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (plain.NotPersistentVariable != NotPersistentVariable.LastValue) - somethingChanged = true; - if (await InitializedPrimitives.DetectsAnyChangeAsync(plain.InitializedPrimitives, latest.InitializedPrimitives)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); - } - - private IList Children { get; } = new List(); - - public IEnumerable GetChildren() - { - return Children; - } - - private IList Kids { get; } = new List(); - - public IEnumerable GetKids() - { - return Kids; - } - - private IList ValueTags { get; } = new List(); - - public IEnumerable GetValueTags() - { - return ValueTags; - } - - public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) - { - ValueTags.Add(valueTag); - } - - public void AddKid(AXSharp.Connector.ITwinElement kid) - { - Kids.Add(kid); - } - - public void AddChild(AXSharp.Connector.ITwinObject twinObject) - { - Children.Add(twinObject); - } - - protected AXSharp.Connector.Connector @Connector { get; } - - public AXSharp.Connector.Connector GetConnector() - { - return this.@Connector; - } - - public string GetSymbolTail() - { - return this.SymbolTail; - } - - public AXSharp.Connector.ITwinObject GetParent() - { - return this.@Parent; - } - - public string Symbol { get; protected set; } - - private string _attributeName; - public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } - - public System.String GetAttributeName(System.Globalization.CultureInfo culture) - { - if (string.IsNullOrEmpty(_attributeName)) - { - return SymbolTail; - } - - return this.Translate(_attributeName, culture).Interpolate(this); - } - - private string _humanReadable; - public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } - - public System.String GetHumanReadable(System.Globalization.CultureInfo culture) - { - return this.Translate(_humanReadable, culture); - } - - protected System.String @SymbolTail { get; set; } - protected AXSharp.Connector.ITwinObject @Parent { get; set; } - public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; - } + public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember plain, global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (plain.NotPersistentVariable != NotPersistentVariable.LastValue) + somethingChanged = true; + if (await InitializedPrimitives.DetectsAnyChangeAsync(plain.InitializedPrimitives, latest.InitializedPrimitives)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.PersistentData.ObjectWithPersistentMember(); + } + + private IList Children { get; } = new List(); + + public IEnumerable GetChildren() + { + return Children; + } + + private IList Kids { get; } = new List(); + + public IEnumerable GetKids() + { + return Kids; + } + + private IList ValueTags { get; } = new List(); + + public IEnumerable GetValueTags() + { + return ValueTags; + } + + public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) + { + ValueTags.Add(valueTag); + } + + public void AddKid(AXSharp.Connector.ITwinElement kid) + { + Kids.Add(kid); + } + + public void AddChild(AXSharp.Connector.ITwinObject twinObject) + { + Children.Add(twinObject); + } + + protected AXSharp.Connector.Connector @Connector { get; } + + public AXSharp.Connector.Connector GetConnector() + { + return this.@Connector; + } + + public string GetSymbolTail() + { + return this.SymbolTail; + } + + public AXSharp.Connector.ITwinObject GetParent() + { + return this.@Parent; + } + + public string Symbol { get; protected set; } + + private string _attributeName; + public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } + + public System.String GetAttributeName(System.Globalization.CultureInfo culture) + { + if (string.IsNullOrEmpty(_attributeName)) + { + return SymbolTail; + } + + return this.Translate(_attributeName, culture).Interpolate(this); + } + + private string _humanReadable; + public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } + + public System.String GetHumanReadable(System.Globalization.CultureInfo culture) + { + return this.Translate(_humanReadable, culture); + } + + protected System.String @SymbolTail { get; set; } + protected AXSharp.Connector.ITwinObject @Parent { get; set; } + public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs index acedfebdd..4d76297d0 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs @@ -1,207 +1,207 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.PersistentData -{ - public partial class PersistentDataContext : AXOpen.Core.AxoContext - { - public AXOpen.Core.AxoObject _rootObject { get; } - public AXOpen.Data.AxoDataPersistentExchange DataManager { get; } - public Tests_L1.PersistentData.PersistentRootObject PersistentRootObject { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public PersistentDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); - DataManager = new AXOpen.Data.AxoDataPersistentExchange(this, "DataManager", "DataManager"); - PersistentRootObject = new Tests_L1.PersistentData.PersistentRootObject(this, "PersistentRootObject", "PersistentRootObject"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.PersistentRootObject._PlainToOnlineNoacAsync(plain.PersistentRootObject); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.PersistentRootObject._PlainToOnlineNoacAsync(plain.PersistentRootObject); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.DataManager = await DataManager.ShadowToPlainAsync(); - plain.PersistentRootObject = await PersistentRootObject.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) - { - await base.ShadowToPlainAsync(plain); - plain._rootObject = await _rootObject.ShadowToPlainAsync(); - plain.DataManager = await DataManager.ShadowToPlainAsync(); - plain.PersistentRootObject = await PersistentRootObject.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) - { - await base.PlainToShadowAsync(plain); - await this._rootObject.PlainToShadowAsync(plain._rootObject); - await this.DataManager.PlainToShadowAsync(plain.DataManager); - await this.PersistentRootObject.PlainToShadowAsync(plain.PersistentRootObject); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.PersistentData +{ + public partial class PersistentDataContext : AXOpen.Core.AxoContext + { + public AXOpen.Core.AxoObject _rootObject { get; } + public AXOpen.Data.AxoDataPersistentExchange DataManager { get; } + public Tests_L1.PersistentData.PersistentRootObject PersistentRootObject { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public PersistentDataContext(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + _rootObject = new AXOpen.Core.AxoObject(this, "_rootObject", "_rootObject"); + DataManager = new AXOpen.Data.AxoDataPersistentExchange(this, "DataManager", "DataManager"); + PersistentRootObject = new Tests_L1.PersistentData.PersistentRootObject(this, "PersistentRootObject", "PersistentRootObject"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain._rootObject = await _rootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.DataManager = await DataManager._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.PersistentRootObject = await PersistentRootObject._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.PersistentRootObject._PlainToOnlineNoacAsync(plain.PersistentRootObject); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this._rootObject._PlainToOnlineNoacAsync(plain._rootObject); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.DataManager._PlainToOnlineNoacAsync(plain.DataManager); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.PersistentRootObject._PlainToOnlineNoacAsync(plain.PersistentRootObject); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain = new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.DataManager = await DataManager.ShadowToPlainAsync(); + plain.PersistentRootObject = await PersistentRootObject.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) + { + await base.ShadowToPlainAsync(plain); + plain._rootObject = await _rootObject.ShadowToPlainAsync(); + plain.DataManager = await DataManager.ShadowToPlainAsync(); + plain.PersistentRootObject = await PersistentRootObject.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain) + { + await base.PlainToShadowAsync(plain); + await this._rootObject.PlainToShadowAsync(plain._rootObject); + await this.DataManager.PlainToShadowAsync(plain.DataManager); + await this.PersistentRootObject.PlainToShadowAsync(plain.PersistentRootObject); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain, global::Pocos.Tests_L1.PersistentData.PersistentDataContext latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) - somethingChanged = true; - if (await DataManager.DetectsAnyChangeAsync(plain.DataManager, latest.DataManager)) - somethingChanged = true; - if (await PersistentRootObject.DetectsAnyChangeAsync(plain.PersistentRootObject, latest.PersistentRootObject)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.PersistentData.PersistentDataContext CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.PersistentDataContext plain, global::Pocos.Tests_L1.PersistentData.PersistentDataContext latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await _rootObject.DetectsAnyChangeAsync(plain._rootObject, latest._rootObject)) + somethingChanged = true; + if (await DataManager.DetectsAnyChangeAsync(plain.DataManager, latest.DataManager)) + somethingChanged = true; + if (await PersistentRootObject.DetectsAnyChangeAsync(plain.PersistentRootObject, latest.PersistentRootObject)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.PersistentData.PersistentDataContext CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.PersistentData.PersistentDataContext(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs index d65349f91..d767a3162 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs @@ -1,286 +1,286 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen; -using AXOpen.Data; - -namespace Tests_L1.PersistentData -{ - public partial class PersistentRootObject : AXSharp.Connector.ITwinObject - { - public OnlinerBool NotPersistentVariable { get; } - - [Persistent()] - public OnlinerInt PersistentVariable_1 { get; } - - [Persistent("default", "1")] - public OnlinerInt PersistentVariable_2 { get; } - public Tests_L1.PersistentData.ObjectWithPersistentMember PropertyWithPersistentMember { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public PersistentRootObject(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - this.@SymbolTail = symbolTail; - this.@Connector = parent.GetConnector(); - this.@Parent = parent; - HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); - PreConstruct(parent, readableTail, symbolTail); - NotPersistentVariable = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "NotPersistentVariable", "NotPersistentVariable"); - PersistentVariable_1 = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "PersistentVariable_1", "PersistentVariable_1"); - PersistentVariable_2 = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "PersistentVariable_2", "PersistentVariable_2"); - PropertyWithPersistentMember = new Tests_L1.PersistentData.ObjectWithPersistentMember(this, "PropertyWithPersistentMember", "PropertyWithPersistentMember"); - parent.AddChild(this); - parent.AddKid(this); - PostConstruct(parent, readableTail, symbolTail); - } - - public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); - await this.ReadAsync(priority); - plain.NotPersistentVariable = NotPersistentVariable.LastValue; - plain.PersistentVariable_1 = PersistentVariable_1.LastValue; - plain.PersistentVariable_2 = PersistentVariable_2.LastValue; -#pragma warning disable CS0612 - plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); - plain.NotPersistentVariable = NotPersistentVariable.LastValue; - plain.PersistentVariable_1 = PersistentVariable_1.LastValue; - plain.PersistentVariable_2 = PersistentVariable_2.LastValue; -#pragma warning disable CS0612 - plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) - { - plain.NotPersistentVariable = NotPersistentVariable.LastValue; - plain.PersistentVariable_1 = PersistentVariable_1.LastValue; - plain.PersistentVariable_2 = PersistentVariable_2.LastValue; -#pragma warning disable CS0612 - plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain, eAccessPriority priority = eAccessPriority.Normal) - { -#pragma warning disable CS0612 - NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - PersistentVariable_1.LethargicWrite(plain.PersistentVariable_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - PersistentVariable_2.LethargicWrite(plain.PersistentVariable_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.PropertyWithPersistentMember._PlainToOnlineNoacAsync(plain.PropertyWithPersistentMember); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) - { -#pragma warning disable CS0612 - NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - PersistentVariable_1.LethargicWrite(plain.PersistentVariable_1); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - PersistentVariable_2.LethargicWrite(plain.PersistentVariable_2); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - await this.PropertyWithPersistentMember._PlainToOnlineNoacAsync(plain.PropertyWithPersistentMember); -#pragma warning restore CS0612 - } - - public async virtual Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); - plain.NotPersistentVariable = NotPersistentVariable.Shadow; - plain.PersistentVariable_1 = PersistentVariable_1.Shadow; - plain.PersistentVariable_2 = PersistentVariable_2.Shadow; - plain.PropertyWithPersistentMember = await PropertyWithPersistentMember.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) - { - plain.NotPersistentVariable = NotPersistentVariable.Shadow; - plain.PersistentVariable_1 = PersistentVariable_1.Shadow; - plain.PersistentVariable_2 = PersistentVariable_2.Shadow; - plain.PropertyWithPersistentMember = await PropertyWithPersistentMember.ShadowToPlainAsync(); - return plain; - } - - public async virtual Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) - { - NotPersistentVariable.Shadow = plain.NotPersistentVariable; - PersistentVariable_1.Shadow = plain.PersistentVariable_1; - PersistentVariable_2.Shadow = plain.PersistentVariable_2; - await this.PropertyWithPersistentMember.PlainToShadowAsync(plain.PropertyWithPersistentMember); - return this.RetrievePrimitives(); - } - - /// - public async virtual Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen; +using AXOpen.Data; + +namespace Tests_L1.PersistentData +{ + public partial class PersistentRootObject : AXSharp.Connector.ITwinObject + { + public OnlinerBool NotPersistentVariable { get; } + + [Persistent()] + public OnlinerInt PersistentVariable_1 { get; } + + [Persistent("default", "1")] + public OnlinerInt PersistentVariable_2 { get; } + public Tests_L1.PersistentData.ObjectWithPersistentMember PropertyWithPersistentMember { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public PersistentRootObject(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + this.@SymbolTail = symbolTail; + this.@Connector = parent.GetConnector(); + this.@Parent = parent; + HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); + PreConstruct(parent, readableTail, symbolTail); + NotPersistentVariable = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "NotPersistentVariable", "NotPersistentVariable"); + PersistentVariable_1 = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "PersistentVariable_1", "PersistentVariable_1"); + PersistentVariable_2 = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "PersistentVariable_2", "PersistentVariable_2"); + PropertyWithPersistentMember = new Tests_L1.PersistentData.ObjectWithPersistentMember(this, "PropertyWithPersistentMember", "PropertyWithPersistentMember"); + parent.AddChild(this); + parent.AddKid(this); + PostConstruct(parent, readableTail, symbolTail); + } + + public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); + await this.ReadAsync(priority); + plain.NotPersistentVariable = NotPersistentVariable.LastValue; + plain.PersistentVariable_1 = PersistentVariable_1.LastValue; + plain.PersistentVariable_2 = PersistentVariable_2.LastValue; +#pragma warning disable CS0612 + plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); + plain.NotPersistentVariable = NotPersistentVariable.LastValue; + plain.PersistentVariable_1 = PersistentVariable_1.LastValue; + plain.PersistentVariable_2 = PersistentVariable_2.LastValue; +#pragma warning disable CS0612 + plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) + { + plain.NotPersistentVariable = NotPersistentVariable.LastValue; + plain.PersistentVariable_1 = PersistentVariable_1.LastValue; + plain.PersistentVariable_2 = PersistentVariable_2.LastValue; +#pragma warning disable CS0612 + plain.PropertyWithPersistentMember = await PropertyWithPersistentMember._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain, eAccessPriority priority = eAccessPriority.Normal) + { +#pragma warning disable CS0612 + NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + PersistentVariable_1.LethargicWrite(plain.PersistentVariable_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + PersistentVariable_2.LethargicWrite(plain.PersistentVariable_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.PropertyWithPersistentMember._PlainToOnlineNoacAsync(plain.PropertyWithPersistentMember); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) + { +#pragma warning disable CS0612 + NotPersistentVariable.LethargicWrite(plain.NotPersistentVariable); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + PersistentVariable_1.LethargicWrite(plain.PersistentVariable_1); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + PersistentVariable_2.LethargicWrite(plain.PersistentVariable_2); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + await this.PropertyWithPersistentMember._PlainToOnlineNoacAsync(plain.PropertyWithPersistentMember); +#pragma warning restore CS0612 + } + + public async virtual Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain = new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); + plain.NotPersistentVariable = NotPersistentVariable.Shadow; + plain.PersistentVariable_1 = PersistentVariable_1.Shadow; + plain.PersistentVariable_2 = PersistentVariable_2.Shadow; + plain.PropertyWithPersistentMember = await PropertyWithPersistentMember.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) + { + plain.NotPersistentVariable = NotPersistentVariable.Shadow; + plain.PersistentVariable_1 = PersistentVariable_1.Shadow; + plain.PersistentVariable_2 = PersistentVariable_2.Shadow; + plain.PropertyWithPersistentMember = await PropertyWithPersistentMember.ShadowToPlainAsync(); + return plain; + } + + public async virtual Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain) + { + NotPersistentVariable.Shadow = plain.NotPersistentVariable; + PersistentVariable_1.Shadow = plain.PersistentVariable_1; + PersistentVariable_2.Shadow = plain.PersistentVariable_2; + await this.PropertyWithPersistentMember.PlainToShadowAsync(plain.PropertyWithPersistentMember); + return this.RetrievePrimitives(); + } + + /// + public async virtual Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain, global::Pocos.Tests_L1.PersistentData.PersistentRootObject latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (plain.NotPersistentVariable != NotPersistentVariable.LastValue) - somethingChanged = true; - if (plain.PersistentVariable_1 != PersistentVariable_1.LastValue) - somethingChanged = true; - if (plain.PersistentVariable_2 != PersistentVariable_2.LastValue) - somethingChanged = true; - if (await PropertyWithPersistentMember.DetectsAnyChangeAsync(plain.PropertyWithPersistentMember, latest.PropertyWithPersistentMember)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public global::Pocos.Tests_L1.PersistentData.PersistentRootObject CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); - } - - private IList Children { get; } = new List(); - - public IEnumerable GetChildren() - { - return Children; - } - - private IList Kids { get; } = new List(); - - public IEnumerable GetKids() - { - return Kids; - } - - private IList ValueTags { get; } = new List(); - - public IEnumerable GetValueTags() - { - return ValueTags; - } - - public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) - { - ValueTags.Add(valueTag); - } - - public void AddKid(AXSharp.Connector.ITwinElement kid) - { - Kids.Add(kid); - } - - public void AddChild(AXSharp.Connector.ITwinObject twinObject) - { - Children.Add(twinObject); - } - - protected AXSharp.Connector.Connector @Connector { get; } - - public AXSharp.Connector.Connector GetConnector() - { - return this.@Connector; - } - - public string GetSymbolTail() - { - return this.SymbolTail; - } - - public AXSharp.Connector.ITwinObject GetParent() - { - return this.@Parent; - } - - public string Symbol { get; protected set; } - - private string _attributeName; - public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } - - public System.String GetAttributeName(System.Globalization.CultureInfo culture) - { - if (string.IsNullOrEmpty(_attributeName)) - { - return SymbolTail; - } - - return this.Translate(_attributeName, culture).Interpolate(this); - } - - private string _humanReadable; - public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } - - public System.String GetHumanReadable(System.Globalization.CultureInfo culture) - { - return this.Translate(_humanReadable, culture); - } - - protected System.String @SymbolTail { get; set; } - protected AXSharp.Connector.ITwinObject @Parent { get; set; } - public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; - } + public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.PersistentData.PersistentRootObject plain, global::Pocos.Tests_L1.PersistentData.PersistentRootObject latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (plain.NotPersistentVariable != NotPersistentVariable.LastValue) + somethingChanged = true; + if (plain.PersistentVariable_1 != PersistentVariable_1.LastValue) + somethingChanged = true; + if (plain.PersistentVariable_2 != PersistentVariable_2.LastValue) + somethingChanged = true; + if (await PropertyWithPersistentMember.DetectsAnyChangeAsync(plain.PropertyWithPersistentMember, latest.PropertyWithPersistentMember)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public global::Pocos.Tests_L1.PersistentData.PersistentRootObject CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.PersistentData.PersistentRootObject(); + } + + private IList Children { get; } = new List(); + + public IEnumerable GetChildren() + { + return Children; + } + + private IList Kids { get; } = new List(); + + public IEnumerable GetKids() + { + return Kids; + } + + private IList ValueTags { get; } = new List(); + + public IEnumerable GetValueTags() + { + return ValueTags; + } + + public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) + { + ValueTags.Add(valueTag); + } + + public void AddKid(AXSharp.Connector.ITwinElement kid) + { + Kids.Add(kid); + } + + public void AddChild(AXSharp.Connector.ITwinObject twinObject) + { + Children.Add(twinObject); + } + + protected AXSharp.Connector.Connector @Connector { get; } + + public AXSharp.Connector.Connector GetConnector() + { + return this.@Connector; + } + + public string GetSymbolTail() + { + return this.SymbolTail; + } + + public AXSharp.Connector.ITwinObject GetParent() + { + return this.@Parent; + } + + public string Symbol { get; protected set; } + + private string _attributeName; + public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } + + public System.String GetAttributeName(System.Globalization.CultureInfo culture) + { + if (string.IsNullOrEmpty(_attributeName)) + { + return SymbolTail; + } + + return this.Translate(_attributeName, culture).Interpolate(this); + } + + private string _humanReadable; + public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } + + public System.String GetHumanReadable(System.Globalization.CultureInfo culture) + { + return this.Translate(_humanReadable, culture); + } + + protected System.String @SymbolTail { get; set; } + protected AXSharp.Connector.ITwinObject @Parent { get; set; } + public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs index ddef3f950..bae781597 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs @@ -1,660 +1,660 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen; -using AXOpen.Data; - -namespace Tests_L1.Primitives -{ - public partial class InitializedPrimitives : AXSharp.Connector.ITwinObject - { - public OnlinerBool v_BOOL { get; } - public OnlinerByte v_BYTE { get; } - public OnlinerWord v_WORD { get; } - public OnlinerDWord v_DWORD { get; } - public OnlinerLWord v_LWORD { get; } - public OnlinerSInt v_SINTMin { get; } - public OnlinerSInt v_SINTMax { get; } - public OnlinerInt v_INT { get; } - public OnlinerDInt v_DINT { get; } - public OnlinerLInt v_LINT { get; } - public OnlinerUSInt v_USINT { get; } - public OnlinerUInt v_UINT { get; } - public OnlinerUDInt v_UDINT { get; } - public OnlinerULInt v_ULINT { get; } - public OnlinerReal v_REAL { get; } - public OnlinerLReal v_LREAL { get; } - public OnlinerTime v_TIME { get; } - public OnlinerLTime v_LTIME { get; } - public OnlinerDate v_DATE { get; } - public OnlinerDate v_LDATE { get; } - public OnlinerTimeOfDay v_TIME_OF_DAY { get; } - public OnlinerLTimeOfDay v_LTIME_OF_DAY { get; } - public OnlinerDateTime v_DATE_AND_TIME { get; } - public OnlinerLDateTime v_LDATE_AND_TIME { get; } - public OnlinerChar v_CHAR { get; } - public OnlinerWChar v_WCHAR { get; } - public OnlinerString v_STRING { get; } - public OnlinerWString v_WSTRING { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public InitializedPrimitives(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - this.@SymbolTail = symbolTail; - this.@Connector = parent.GetConnector(); - this.@Parent = parent; - HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); - PreConstruct(parent, readableTail, symbolTail); - v_BOOL = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "v_BOOL", "v_BOOL"); - v_BYTE = @Connector.ConnectorAdapter.AdapterFactory.CreateBYTE(this, "v_BYTE", "v_BYTE"); - v_WORD = @Connector.ConnectorAdapter.AdapterFactory.CreateWORD(this, "v_WORD", "v_WORD"); - v_DWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateDWORD(this, "v_DWORD", "v_DWORD"); - v_LWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateLWORD(this, "v_LWORD", "v_LWORD"); - v_SINTMin = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMin", "v_SINTMin"); - v_SINTMax = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMax", "v_SINTMax"); - v_INT = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "v_INT", "v_INT"); - v_DINT = @Connector.ConnectorAdapter.AdapterFactory.CreateDINT(this, "v_DINT", "v_DINT"); - v_LINT = @Connector.ConnectorAdapter.AdapterFactory.CreateLINT(this, "v_LINT", "v_LINT"); - v_USINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUSINT(this, "v_USINT", "v_USINT"); - v_UINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUINT(this, "v_UINT", "v_UINT"); - v_UDINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUDINT(this, "v_UDINT", "v_UDINT"); - v_ULINT = @Connector.ConnectorAdapter.AdapterFactory.CreateULINT(this, "v_ULINT", "v_ULINT"); - v_REAL = @Connector.ConnectorAdapter.AdapterFactory.CreateREAL(this, "v_REAL", "v_REAL"); - v_LREAL = @Connector.ConnectorAdapter.AdapterFactory.CreateLREAL(this, "v_LREAL", "v_LREAL"); - v_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME(this, "v_TIME", "v_TIME"); - v_LTIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME(this, "v_LTIME", "v_LTIME"); - v_DATE = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE(this, "v_DATE", "v_DATE"); - v_LDATE = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE(this, "v_LDATE", "v_LDATE"); - v_TIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME_OF_DAY(this, "v_TIME_OF_DAY", "v_TIME_OF_DAY"); - v_LTIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME_OF_DAY(this, "v_LTIME_OF_DAY", "v_LTIME_OF_DAY"); - v_DATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE_AND_TIME(this, "v_DATE_AND_TIME", "v_DATE_AND_TIME"); - v_LDATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE_AND_TIME(this, "v_LDATE_AND_TIME", "v_LDATE_AND_TIME"); - v_CHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateCHAR(this, "v_CHAR", "v_CHAR"); - v_WCHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateWCHAR(this, "v_WCHAR", "v_WCHAR"); - v_STRING = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "v_STRING", "v_STRING"); - v_WSTRING = @Connector.ConnectorAdapter.AdapterFactory.CreateWSTRING(this, "v_WSTRING", "v_WSTRING"); - parent.AddChild(this); - parent.AddKid(this); - PostConstruct(parent, readableTail, symbolTail); - } - - public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); - await this.ReadAsync(priority); - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) - { - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain, eAccessPriority priority = eAccessPriority.Normal) - { -#pragma warning disable CS0612 - v_BOOL.LethargicWrite(plain.v_BOOL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_BYTE.LethargicWrite(plain.v_BYTE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WORD.LethargicWrite(plain.v_WORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DWORD.LethargicWrite(plain.v_DWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LWORD.LethargicWrite(plain.v_LWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMin.LethargicWrite(plain.v_SINTMin); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMax.LethargicWrite(plain.v_SINTMax); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_INT.LethargicWrite(plain.v_INT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DINT.LethargicWrite(plain.v_DINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LINT.LethargicWrite(plain.v_LINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_USINT.LethargicWrite(plain.v_USINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UINT.LethargicWrite(plain.v_UINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UDINT.LethargicWrite(plain.v_UDINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_ULINT.LethargicWrite(plain.v_ULINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_REAL.LethargicWrite(plain.v_REAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LREAL.LethargicWrite(plain.v_LREAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME.LethargicWrite(plain.v_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME.LethargicWrite(plain.v_LTIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE.LethargicWrite(plain.v_DATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE.LethargicWrite(plain.v_LDATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_CHAR.LethargicWrite(plain.v_CHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WCHAR.LethargicWrite(plain.v_WCHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_STRING.LethargicWrite(plain.v_STRING); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WSTRING.LethargicWrite(plain.v_WSTRING); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) - { -#pragma warning disable CS0612 - v_BOOL.LethargicWrite(plain.v_BOOL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_BYTE.LethargicWrite(plain.v_BYTE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WORD.LethargicWrite(plain.v_WORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DWORD.LethargicWrite(plain.v_DWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LWORD.LethargicWrite(plain.v_LWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMin.LethargicWrite(plain.v_SINTMin); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMax.LethargicWrite(plain.v_SINTMax); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_INT.LethargicWrite(plain.v_INT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DINT.LethargicWrite(plain.v_DINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LINT.LethargicWrite(plain.v_LINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_USINT.LethargicWrite(plain.v_USINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UINT.LethargicWrite(plain.v_UINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UDINT.LethargicWrite(plain.v_UDINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_ULINT.LethargicWrite(plain.v_ULINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_REAL.LethargicWrite(plain.v_REAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LREAL.LethargicWrite(plain.v_LREAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME.LethargicWrite(plain.v_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME.LethargicWrite(plain.v_LTIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE.LethargicWrite(plain.v_DATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE.LethargicWrite(plain.v_LDATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_CHAR.LethargicWrite(plain.v_CHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WCHAR.LethargicWrite(plain.v_WCHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_STRING.LethargicWrite(plain.v_STRING); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WSTRING.LethargicWrite(plain.v_WSTRING); -#pragma warning restore CS0612 - } - - public async virtual Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); - plain.v_BOOL = v_BOOL.Shadow; - plain.v_BYTE = v_BYTE.Shadow; - plain.v_WORD = v_WORD.Shadow; - plain.v_DWORD = v_DWORD.Shadow; - plain.v_LWORD = v_LWORD.Shadow; - plain.v_SINTMin = v_SINTMin.Shadow; - plain.v_SINTMax = v_SINTMax.Shadow; - plain.v_INT = v_INT.Shadow; - plain.v_DINT = v_DINT.Shadow; - plain.v_LINT = v_LINT.Shadow; - plain.v_USINT = v_USINT.Shadow; - plain.v_UINT = v_UINT.Shadow; - plain.v_UDINT = v_UDINT.Shadow; - plain.v_ULINT = v_ULINT.Shadow; - plain.v_REAL = v_REAL.Shadow; - plain.v_LREAL = v_LREAL.Shadow; - plain.v_TIME = v_TIME.Shadow; - plain.v_LTIME = v_LTIME.Shadow; - plain.v_DATE = v_DATE.Shadow; - plain.v_LDATE = v_LDATE.Shadow; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; - plain.v_CHAR = v_CHAR.Shadow; - plain.v_WCHAR = v_WCHAR.Shadow; - plain.v_STRING = v_STRING.Shadow; - plain.v_WSTRING = v_WSTRING.Shadow; - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) - { - plain.v_BOOL = v_BOOL.Shadow; - plain.v_BYTE = v_BYTE.Shadow; - plain.v_WORD = v_WORD.Shadow; - plain.v_DWORD = v_DWORD.Shadow; - plain.v_LWORD = v_LWORD.Shadow; - plain.v_SINTMin = v_SINTMin.Shadow; - plain.v_SINTMax = v_SINTMax.Shadow; - plain.v_INT = v_INT.Shadow; - plain.v_DINT = v_DINT.Shadow; - plain.v_LINT = v_LINT.Shadow; - plain.v_USINT = v_USINT.Shadow; - plain.v_UINT = v_UINT.Shadow; - plain.v_UDINT = v_UDINT.Shadow; - plain.v_ULINT = v_ULINT.Shadow; - plain.v_REAL = v_REAL.Shadow; - plain.v_LREAL = v_LREAL.Shadow; - plain.v_TIME = v_TIME.Shadow; - plain.v_LTIME = v_LTIME.Shadow; - plain.v_DATE = v_DATE.Shadow; - plain.v_LDATE = v_LDATE.Shadow; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; - plain.v_CHAR = v_CHAR.Shadow; - plain.v_WCHAR = v_WCHAR.Shadow; - plain.v_STRING = v_STRING.Shadow; - plain.v_WSTRING = v_WSTRING.Shadow; - return plain; - } - - public async virtual Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) - { - v_BOOL.Shadow = plain.v_BOOL; - v_BYTE.Shadow = plain.v_BYTE; - v_WORD.Shadow = plain.v_WORD; - v_DWORD.Shadow = plain.v_DWORD; - v_LWORD.Shadow = plain.v_LWORD; - v_SINTMin.Shadow = plain.v_SINTMin; - v_SINTMax.Shadow = plain.v_SINTMax; - v_INT.Shadow = plain.v_INT; - v_DINT.Shadow = plain.v_DINT; - v_LINT.Shadow = plain.v_LINT; - v_USINT.Shadow = plain.v_USINT; - v_UINT.Shadow = plain.v_UINT; - v_UDINT.Shadow = plain.v_UDINT; - v_ULINT.Shadow = plain.v_ULINT; - v_REAL.Shadow = plain.v_REAL; - v_LREAL.Shadow = plain.v_LREAL; - v_TIME.Shadow = plain.v_TIME; - v_LTIME.Shadow = plain.v_LTIME; - v_DATE.Shadow = plain.v_DATE; - v_LDATE.Shadow = plain.v_LDATE; - v_TIME_OF_DAY.Shadow = plain.v_TIME_OF_DAY; - v_LTIME_OF_DAY.Shadow = plain.v_LTIME_OF_DAY; - v_DATE_AND_TIME.Shadow = plain.v_DATE_AND_TIME; - v_LDATE_AND_TIME.Shadow = plain.v_LDATE_AND_TIME; - v_CHAR.Shadow = plain.v_CHAR; - v_WCHAR.Shadow = plain.v_WCHAR; - v_STRING.Shadow = plain.v_STRING; - v_WSTRING.Shadow = plain.v_WSTRING; - return this.RetrievePrimitives(); - } - - /// - public async virtual Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen; +using AXOpen.Data; + +namespace Tests_L1.Primitives +{ + public partial class InitializedPrimitives : AXSharp.Connector.ITwinObject + { + public OnlinerBool v_BOOL { get; } + public OnlinerByte v_BYTE { get; } + public OnlinerWord v_WORD { get; } + public OnlinerDWord v_DWORD { get; } + public OnlinerLWord v_LWORD { get; } + public OnlinerSInt v_SINTMin { get; } + public OnlinerSInt v_SINTMax { get; } + public OnlinerInt v_INT { get; } + public OnlinerDInt v_DINT { get; } + public OnlinerLInt v_LINT { get; } + public OnlinerUSInt v_USINT { get; } + public OnlinerUInt v_UINT { get; } + public OnlinerUDInt v_UDINT { get; } + public OnlinerULInt v_ULINT { get; } + public OnlinerReal v_REAL { get; } + public OnlinerLReal v_LREAL { get; } + public OnlinerTime v_TIME { get; } + public OnlinerLTime v_LTIME { get; } + public OnlinerDate v_DATE { get; } + public OnlinerDate v_LDATE { get; } + public OnlinerTimeOfDay v_TIME_OF_DAY { get; } + public OnlinerLTimeOfDay v_LTIME_OF_DAY { get; } + public OnlinerDateTime v_DATE_AND_TIME { get; } + public OnlinerLDateTime v_LDATE_AND_TIME { get; } + public OnlinerChar v_CHAR { get; } + public OnlinerWChar v_WCHAR { get; } + public OnlinerString v_STRING { get; } + public OnlinerWString v_WSTRING { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public InitializedPrimitives(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + this.@SymbolTail = symbolTail; + this.@Connector = parent.GetConnector(); + this.@Parent = parent; + HumanReadable = AXSharp.Connector.Connector.CreateHumanReadable(parent.HumanReadable, readableTail); + PreConstruct(parent, readableTail, symbolTail); + v_BOOL = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "v_BOOL", "v_BOOL"); + v_BYTE = @Connector.ConnectorAdapter.AdapterFactory.CreateBYTE(this, "v_BYTE", "v_BYTE"); + v_WORD = @Connector.ConnectorAdapter.AdapterFactory.CreateWORD(this, "v_WORD", "v_WORD"); + v_DWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateDWORD(this, "v_DWORD", "v_DWORD"); + v_LWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateLWORD(this, "v_LWORD", "v_LWORD"); + v_SINTMin = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMin", "v_SINTMin"); + v_SINTMax = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMax", "v_SINTMax"); + v_INT = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "v_INT", "v_INT"); + v_DINT = @Connector.ConnectorAdapter.AdapterFactory.CreateDINT(this, "v_DINT", "v_DINT"); + v_LINT = @Connector.ConnectorAdapter.AdapterFactory.CreateLINT(this, "v_LINT", "v_LINT"); + v_USINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUSINT(this, "v_USINT", "v_USINT"); + v_UINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUINT(this, "v_UINT", "v_UINT"); + v_UDINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUDINT(this, "v_UDINT", "v_UDINT"); + v_ULINT = @Connector.ConnectorAdapter.AdapterFactory.CreateULINT(this, "v_ULINT", "v_ULINT"); + v_REAL = @Connector.ConnectorAdapter.AdapterFactory.CreateREAL(this, "v_REAL", "v_REAL"); + v_LREAL = @Connector.ConnectorAdapter.AdapterFactory.CreateLREAL(this, "v_LREAL", "v_LREAL"); + v_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME(this, "v_TIME", "v_TIME"); + v_LTIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME(this, "v_LTIME", "v_LTIME"); + v_DATE = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE(this, "v_DATE", "v_DATE"); + v_LDATE = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE(this, "v_LDATE", "v_LDATE"); + v_TIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME_OF_DAY(this, "v_TIME_OF_DAY", "v_TIME_OF_DAY"); + v_LTIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME_OF_DAY(this, "v_LTIME_OF_DAY", "v_LTIME_OF_DAY"); + v_DATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE_AND_TIME(this, "v_DATE_AND_TIME", "v_DATE_AND_TIME"); + v_LDATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE_AND_TIME(this, "v_LDATE_AND_TIME", "v_LDATE_AND_TIME"); + v_CHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateCHAR(this, "v_CHAR", "v_CHAR"); + v_WCHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateWCHAR(this, "v_WCHAR", "v_WCHAR"); + v_STRING = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "v_STRING", "v_STRING"); + v_WSTRING = @Connector.ConnectorAdapter.AdapterFactory.CreateWSTRING(this, "v_WSTRING", "v_WSTRING"); + parent.AddChild(this); + parent.AddKid(this); + PostConstruct(parent, readableTail, symbolTail); + } + + public async virtual Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); + await this.ReadAsync(priority); + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) + { + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + public async virtual Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain, eAccessPriority priority = eAccessPriority.Normal) + { +#pragma warning disable CS0612 + v_BOOL.LethargicWrite(plain.v_BOOL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_BYTE.LethargicWrite(plain.v_BYTE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WORD.LethargicWrite(plain.v_WORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DWORD.LethargicWrite(plain.v_DWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LWORD.LethargicWrite(plain.v_LWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMin.LethargicWrite(plain.v_SINTMin); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMax.LethargicWrite(plain.v_SINTMax); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_INT.LethargicWrite(plain.v_INT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DINT.LethargicWrite(plain.v_DINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LINT.LethargicWrite(plain.v_LINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_USINT.LethargicWrite(plain.v_USINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UINT.LethargicWrite(plain.v_UINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UDINT.LethargicWrite(plain.v_UDINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_ULINT.LethargicWrite(plain.v_ULINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_REAL.LethargicWrite(plain.v_REAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LREAL.LethargicWrite(plain.v_LREAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME.LethargicWrite(plain.v_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME.LethargicWrite(plain.v_LTIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE.LethargicWrite(plain.v_DATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE.LethargicWrite(plain.v_LDATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_CHAR.LethargicWrite(plain.v_CHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WCHAR.LethargicWrite(plain.v_WCHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_STRING.LethargicWrite(plain.v_STRING); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WSTRING.LethargicWrite(plain.v_WSTRING); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) + { +#pragma warning disable CS0612 + v_BOOL.LethargicWrite(plain.v_BOOL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_BYTE.LethargicWrite(plain.v_BYTE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WORD.LethargicWrite(plain.v_WORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DWORD.LethargicWrite(plain.v_DWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LWORD.LethargicWrite(plain.v_LWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMin.LethargicWrite(plain.v_SINTMin); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMax.LethargicWrite(plain.v_SINTMax); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_INT.LethargicWrite(plain.v_INT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DINT.LethargicWrite(plain.v_DINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LINT.LethargicWrite(plain.v_LINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_USINT.LethargicWrite(plain.v_USINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UINT.LethargicWrite(plain.v_UINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UDINT.LethargicWrite(plain.v_UDINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_ULINT.LethargicWrite(plain.v_ULINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_REAL.LethargicWrite(plain.v_REAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LREAL.LethargicWrite(plain.v_LREAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME.LethargicWrite(plain.v_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME.LethargicWrite(plain.v_LTIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE.LethargicWrite(plain.v_DATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE.LethargicWrite(plain.v_LDATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_CHAR.LethargicWrite(plain.v_CHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WCHAR.LethargicWrite(plain.v_WCHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_STRING.LethargicWrite(plain.v_STRING); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WSTRING.LethargicWrite(plain.v_WSTRING); +#pragma warning restore CS0612 + } + + public async virtual Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain = new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); + plain.v_BOOL = v_BOOL.Shadow; + plain.v_BYTE = v_BYTE.Shadow; + plain.v_WORD = v_WORD.Shadow; + plain.v_DWORD = v_DWORD.Shadow; + plain.v_LWORD = v_LWORD.Shadow; + plain.v_SINTMin = v_SINTMin.Shadow; + plain.v_SINTMax = v_SINTMax.Shadow; + plain.v_INT = v_INT.Shadow; + plain.v_DINT = v_DINT.Shadow; + plain.v_LINT = v_LINT.Shadow; + plain.v_USINT = v_USINT.Shadow; + plain.v_UINT = v_UINT.Shadow; + plain.v_UDINT = v_UDINT.Shadow; + plain.v_ULINT = v_ULINT.Shadow; + plain.v_REAL = v_REAL.Shadow; + plain.v_LREAL = v_LREAL.Shadow; + plain.v_TIME = v_TIME.Shadow; + plain.v_LTIME = v_LTIME.Shadow; + plain.v_DATE = v_DATE.Shadow; + plain.v_LDATE = v_LDATE.Shadow; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; + plain.v_CHAR = v_CHAR.Shadow; + plain.v_WCHAR = v_WCHAR.Shadow; + plain.v_STRING = v_STRING.Shadow; + plain.v_WSTRING = v_WSTRING.Shadow; + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) + { + plain.v_BOOL = v_BOOL.Shadow; + plain.v_BYTE = v_BYTE.Shadow; + plain.v_WORD = v_WORD.Shadow; + plain.v_DWORD = v_DWORD.Shadow; + plain.v_LWORD = v_LWORD.Shadow; + plain.v_SINTMin = v_SINTMin.Shadow; + plain.v_SINTMax = v_SINTMax.Shadow; + plain.v_INT = v_INT.Shadow; + plain.v_DINT = v_DINT.Shadow; + plain.v_LINT = v_LINT.Shadow; + plain.v_USINT = v_USINT.Shadow; + plain.v_UINT = v_UINT.Shadow; + plain.v_UDINT = v_UDINT.Shadow; + plain.v_ULINT = v_ULINT.Shadow; + plain.v_REAL = v_REAL.Shadow; + plain.v_LREAL = v_LREAL.Shadow; + plain.v_TIME = v_TIME.Shadow; + plain.v_LTIME = v_LTIME.Shadow; + plain.v_DATE = v_DATE.Shadow; + plain.v_LDATE = v_LDATE.Shadow; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; + plain.v_CHAR = v_CHAR.Shadow; + plain.v_WCHAR = v_WCHAR.Shadow; + plain.v_STRING = v_STRING.Shadow; + plain.v_WSTRING = v_WSTRING.Shadow; + return plain; + } + + public async virtual Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain) + { + v_BOOL.Shadow = plain.v_BOOL; + v_BYTE.Shadow = plain.v_BYTE; + v_WORD.Shadow = plain.v_WORD; + v_DWORD.Shadow = plain.v_DWORD; + v_LWORD.Shadow = plain.v_LWORD; + v_SINTMin.Shadow = plain.v_SINTMin; + v_SINTMax.Shadow = plain.v_SINTMax; + v_INT.Shadow = plain.v_INT; + v_DINT.Shadow = plain.v_DINT; + v_LINT.Shadow = plain.v_LINT; + v_USINT.Shadow = plain.v_USINT; + v_UINT.Shadow = plain.v_UINT; + v_UDINT.Shadow = plain.v_UDINT; + v_ULINT.Shadow = plain.v_ULINT; + v_REAL.Shadow = plain.v_REAL; + v_LREAL.Shadow = plain.v_LREAL; + v_TIME.Shadow = plain.v_TIME; + v_LTIME.Shadow = plain.v_LTIME; + v_DATE.Shadow = plain.v_DATE; + v_LDATE.Shadow = plain.v_LDATE; + v_TIME_OF_DAY.Shadow = plain.v_TIME_OF_DAY; + v_LTIME_OF_DAY.Shadow = plain.v_LTIME_OF_DAY; + v_DATE_AND_TIME.Shadow = plain.v_DATE_AND_TIME; + v_LDATE_AND_TIME.Shadow = plain.v_LDATE_AND_TIME; + v_CHAR.Shadow = plain.v_CHAR; + v_WCHAR.Shadow = plain.v_WCHAR; + v_STRING.Shadow = plain.v_STRING; + v_WSTRING.Shadow = plain.v_WSTRING; + return this.RetrievePrimitives(); + } + + /// + public async virtual Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain, global::Pocos.Tests_L1.Primitives.InitializedPrimitives latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (plain.v_BOOL != v_BOOL.LastValue) - somethingChanged = true; - if (plain.v_BYTE != v_BYTE.LastValue) - somethingChanged = true; - if (plain.v_WORD != v_WORD.LastValue) - somethingChanged = true; - if (plain.v_DWORD != v_DWORD.LastValue) - somethingChanged = true; - if (plain.v_LWORD != v_LWORD.LastValue) - somethingChanged = true; - if (plain.v_SINTMin != v_SINTMin.LastValue) - somethingChanged = true; - if (plain.v_SINTMax != v_SINTMax.LastValue) - somethingChanged = true; - if (plain.v_INT != v_INT.LastValue) - somethingChanged = true; - if (plain.v_DINT != v_DINT.LastValue) - somethingChanged = true; - if (plain.v_LINT != v_LINT.LastValue) - somethingChanged = true; - if (plain.v_USINT != v_USINT.LastValue) - somethingChanged = true; - if (plain.v_UINT != v_UINT.LastValue) - somethingChanged = true; - if (plain.v_UDINT != v_UDINT.LastValue) - somethingChanged = true; - if (plain.v_ULINT != v_ULINT.LastValue) - somethingChanged = true; - if (plain.v_REAL != v_REAL.LastValue) - somethingChanged = true; - if (plain.v_LREAL != v_LREAL.LastValue) - somethingChanged = true; - if (plain.v_TIME != v_TIME.LastValue) - somethingChanged = true; - if (plain.v_LTIME != v_LTIME.LastValue) - somethingChanged = true; - if (plain.v_DATE != v_DATE.LastValue) - somethingChanged = true; - if (plain.v_LDATE != v_LDATE.LastValue) - somethingChanged = true; - if (plain.v_TIME_OF_DAY != v_TIME_OF_DAY.LastValue) - somethingChanged = true; - if (plain.v_LTIME_OF_DAY != v_LTIME_OF_DAY.LastValue) - somethingChanged = true; - if (plain.v_DATE_AND_TIME != v_DATE_AND_TIME.LastValue) - somethingChanged = true; - if (plain.v_LDATE_AND_TIME != v_LDATE_AND_TIME.LastValue) - somethingChanged = true; - if (plain.v_CHAR != v_CHAR.LastValue) - somethingChanged = true; - if (plain.v_WCHAR != v_WCHAR.LastValue) - somethingChanged = true; - if (plain.v_STRING != v_STRING.LastValue) - somethingChanged = true; - if (plain.v_WSTRING != v_WSTRING.LastValue) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public global::Pocos.Tests_L1.Primitives.InitializedPrimitives CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); - } - - private IList Children { get; } = new List(); - - public IEnumerable GetChildren() - { - return Children; - } - - private IList Kids { get; } = new List(); - - public IEnumerable GetKids() - { - return Kids; - } - - private IList ValueTags { get; } = new List(); - - public IEnumerable GetValueTags() - { - return ValueTags; - } - - public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) - { - ValueTags.Add(valueTag); - } - - public void AddKid(AXSharp.Connector.ITwinElement kid) - { - Kids.Add(kid); - } - - public void AddChild(AXSharp.Connector.ITwinObject twinObject) - { - Children.Add(twinObject); - } - - protected AXSharp.Connector.Connector @Connector { get; } - - public AXSharp.Connector.Connector GetConnector() - { - return this.@Connector; - } - - public string GetSymbolTail() - { - return this.SymbolTail; - } - - public AXSharp.Connector.ITwinObject GetParent() - { - return this.@Parent; - } - - public string Symbol { get; protected set; } - - private string _attributeName; - public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } - - public System.String GetAttributeName(System.Globalization.CultureInfo culture) - { - if (string.IsNullOrEmpty(_attributeName)) - { - return SymbolTail; - } - - return this.Translate(_attributeName, culture).Interpolate(this); - } - - private string _humanReadable; - public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } - - public System.String GetHumanReadable(System.Globalization.CultureInfo culture) - { - return this.Translate(_humanReadable, culture); - } - - protected System.String @SymbolTail { get; set; } - protected AXSharp.Connector.ITwinObject @Parent { get; set; } - public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; - } + public async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.InitializedPrimitives plain, global::Pocos.Tests_L1.Primitives.InitializedPrimitives latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (plain.v_BOOL != v_BOOL.LastValue) + somethingChanged = true; + if (plain.v_BYTE != v_BYTE.LastValue) + somethingChanged = true; + if (plain.v_WORD != v_WORD.LastValue) + somethingChanged = true; + if (plain.v_DWORD != v_DWORD.LastValue) + somethingChanged = true; + if (plain.v_LWORD != v_LWORD.LastValue) + somethingChanged = true; + if (plain.v_SINTMin != v_SINTMin.LastValue) + somethingChanged = true; + if (plain.v_SINTMax != v_SINTMax.LastValue) + somethingChanged = true; + if (plain.v_INT != v_INT.LastValue) + somethingChanged = true; + if (plain.v_DINT != v_DINT.LastValue) + somethingChanged = true; + if (plain.v_LINT != v_LINT.LastValue) + somethingChanged = true; + if (plain.v_USINT != v_USINT.LastValue) + somethingChanged = true; + if (plain.v_UINT != v_UINT.LastValue) + somethingChanged = true; + if (plain.v_UDINT != v_UDINT.LastValue) + somethingChanged = true; + if (plain.v_ULINT != v_ULINT.LastValue) + somethingChanged = true; + if (plain.v_REAL != v_REAL.LastValue) + somethingChanged = true; + if (plain.v_LREAL != v_LREAL.LastValue) + somethingChanged = true; + if (plain.v_TIME != v_TIME.LastValue) + somethingChanged = true; + if (plain.v_LTIME != v_LTIME.LastValue) + somethingChanged = true; + if (plain.v_DATE != v_DATE.LastValue) + somethingChanged = true; + if (plain.v_LDATE != v_LDATE.LastValue) + somethingChanged = true; + if (plain.v_TIME_OF_DAY != v_TIME_OF_DAY.LastValue) + somethingChanged = true; + if (plain.v_LTIME_OF_DAY != v_LTIME_OF_DAY.LastValue) + somethingChanged = true; + if (plain.v_DATE_AND_TIME != v_DATE_AND_TIME.LastValue) + somethingChanged = true; + if (plain.v_LDATE_AND_TIME != v_LDATE_AND_TIME.LastValue) + somethingChanged = true; + if (plain.v_CHAR != v_CHAR.LastValue) + somethingChanged = true; + if (plain.v_WCHAR != v_WCHAR.LastValue) + somethingChanged = true; + if (plain.v_STRING != v_STRING.LastValue) + somethingChanged = true; + if (plain.v_WSTRING != v_WSTRING.LastValue) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public global::Pocos.Tests_L1.Primitives.InitializedPrimitives CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.Primitives.InitializedPrimitives(); + } + + private IList Children { get; } = new List(); + + public IEnumerable GetChildren() + { + return Children; + } + + private IList Kids { get; } = new List(); + + public IEnumerable GetKids() + { + return Kids; + } + + private IList ValueTags { get; } = new List(); + + public IEnumerable GetValueTags() + { + return ValueTags; + } + + public void AddValueTag(AXSharp.Connector.ITwinPrimitive valueTag) + { + ValueTags.Add(valueTag); + } + + public void AddKid(AXSharp.Connector.ITwinElement kid) + { + Kids.Add(kid); + } + + public void AddChild(AXSharp.Connector.ITwinObject twinObject) + { + Children.Add(twinObject); + } + + protected AXSharp.Connector.Connector @Connector { get; } + + public AXSharp.Connector.Connector GetConnector() + { + return this.@Connector; + } + + public string GetSymbolTail() + { + return this.SymbolTail; + } + + public AXSharp.Connector.ITwinObject GetParent() + { + return this.@Parent; + } + + public string Symbol { get; protected set; } + + private string _attributeName; + public System.String AttributeName { get => string.IsNullOrEmpty(_attributeName) ? SymbolTail : _attributeName.Interpolate(this).CleanUpLocalizationTokens(); set => _attributeName = value; } + + public System.String GetAttributeName(System.Globalization.CultureInfo culture) + { + if (string.IsNullOrEmpty(_attributeName)) + { + return SymbolTail; + } + + return this.Translate(_attributeName, culture).Interpolate(this); + } + + private string _humanReadable; + public string HumanReadable { get => string.IsNullOrEmpty(_humanReadable) ? SymbolTail : _humanReadable.Interpolate(this).CleanUpLocalizationTokens(); set => _humanReadable = value; } + + public System.String GetHumanReadable(System.Globalization.CultureInfo culture) + { + return this.Translate(_humanReadable, culture); + } + + protected System.String @SymbolTail { get; set; } + protected AXSharp.Connector.ITwinObject @Parent { get; set; } + public AXSharp.Connector.Localizations.Translator Interpreter => global::axopen_data_tests_l1.PlcTranslator.Instance; + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs index f364b5553..6aab08623 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs @@ -1,590 +1,590 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen; -using AXOpen.Data; - -namespace Tests_L1.Primitives -{ - public partial class PrimitivesDataEntity : AXOpen.Data.AxoDataEntity - { - public OnlinerBool v_BOOL { get; } - public OnlinerByte v_BYTE { get; } - public OnlinerWord v_WORD { get; } - public OnlinerDWord v_DWORD { get; } - public OnlinerLWord v_LWORD { get; } - public OnlinerSInt v_SINTMin { get; } - public OnlinerSInt v_SINTMax { get; } - public OnlinerInt v_INT { get; } - public OnlinerDInt v_DINT { get; } - public OnlinerLInt v_LINT { get; } - public OnlinerUSInt v_USINT { get; } - public OnlinerUInt v_UINT { get; } - public OnlinerUDInt v_UDINT { get; } - public OnlinerULInt v_ULINT { get; } - public OnlinerReal v_REAL { get; } - public OnlinerLReal v_LREAL { get; } - public OnlinerTime v_TIME { get; } - public OnlinerLTime v_LTIME { get; } - public OnlinerDate v_DATE { get; } - public OnlinerDate v_LDATE { get; } - public OnlinerTimeOfDay v_TIME_OF_DAY { get; } - public OnlinerLTimeOfDay v_LTIME_OF_DAY { get; } - public OnlinerDateTime v_DATE_AND_TIME { get; } - public OnlinerLDateTime v_LDATE_AND_TIME { get; } - public OnlinerChar v_CHAR { get; } - public OnlinerWChar v_WCHAR { get; } - public OnlinerString v_STRING { get; } - public OnlinerWString v_WSTRING { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public PrimitivesDataEntity(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - v_BOOL = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "v_BOOL", "v_BOOL"); - v_BYTE = @Connector.ConnectorAdapter.AdapterFactory.CreateBYTE(this, "v_BYTE", "v_BYTE"); - v_WORD = @Connector.ConnectorAdapter.AdapterFactory.CreateWORD(this, "v_WORD", "v_WORD"); - v_DWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateDWORD(this, "v_DWORD", "v_DWORD"); - v_LWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateLWORD(this, "v_LWORD", "v_LWORD"); - v_SINTMin = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMin", "v_SINTMin"); - v_SINTMax = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMax", "v_SINTMax"); - v_INT = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "v_INT", "v_INT"); - v_DINT = @Connector.ConnectorAdapter.AdapterFactory.CreateDINT(this, "v_DINT", "v_DINT"); - v_LINT = @Connector.ConnectorAdapter.AdapterFactory.CreateLINT(this, "v_LINT", "v_LINT"); - v_USINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUSINT(this, "v_USINT", "v_USINT"); - v_UINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUINT(this, "v_UINT", "v_UINT"); - v_UDINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUDINT(this, "v_UDINT", "v_UDINT"); - v_ULINT = @Connector.ConnectorAdapter.AdapterFactory.CreateULINT(this, "v_ULINT", "v_ULINT"); - v_REAL = @Connector.ConnectorAdapter.AdapterFactory.CreateREAL(this, "v_REAL", "v_REAL"); - v_LREAL = @Connector.ConnectorAdapter.AdapterFactory.CreateLREAL(this, "v_LREAL", "v_LREAL"); - v_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME(this, "v_TIME", "v_TIME"); - v_LTIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME(this, "v_LTIME", "v_LTIME"); - v_DATE = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE(this, "v_DATE", "v_DATE"); - v_LDATE = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE(this, "v_LDATE", "v_LDATE"); - v_TIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME_OF_DAY(this, "v_TIME_OF_DAY", "v_TIME_OF_DAY"); - v_LTIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME_OF_DAY(this, "v_LTIME_OF_DAY", "v_LTIME_OF_DAY"); - v_DATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE_AND_TIME(this, "v_DATE_AND_TIME", "v_DATE_AND_TIME"); - v_LDATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE_AND_TIME(this, "v_LDATE_AND_TIME", "v_LDATE_AND_TIME"); - v_CHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateCHAR(this, "v_CHAR", "v_CHAR"); - v_WCHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateWCHAR(this, "v_WCHAR", "v_WCHAR"); - v_STRING = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "v_STRING", "v_STRING"); - v_WSTRING = @Connector.ConnectorAdapter.AdapterFactory.CreateWSTRING(this, "v_WSTRING", "v_WSTRING"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.v_BOOL = v_BOOL.LastValue; - plain.v_BYTE = v_BYTE.LastValue; - plain.v_WORD = v_WORD.LastValue; - plain.v_DWORD = v_DWORD.LastValue; - plain.v_LWORD = v_LWORD.LastValue; - plain.v_SINTMin = v_SINTMin.LastValue; - plain.v_SINTMax = v_SINTMax.LastValue; - plain.v_INT = v_INT.LastValue; - plain.v_DINT = v_DINT.LastValue; - plain.v_LINT = v_LINT.LastValue; - plain.v_USINT = v_USINT.LastValue; - plain.v_UINT = v_UINT.LastValue; - plain.v_UDINT = v_UDINT.LastValue; - plain.v_ULINT = v_ULINT.LastValue; - plain.v_REAL = v_REAL.LastValue; - plain.v_LREAL = v_LREAL.LastValue; - plain.v_TIME = v_TIME.LastValue; - plain.v_LTIME = v_LTIME.LastValue; - plain.v_DATE = v_DATE.LastValue; - plain.v_LDATE = v_LDATE.LastValue; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; - plain.v_CHAR = v_CHAR.LastValue; - plain.v_WCHAR = v_WCHAR.LastValue; - plain.v_STRING = v_STRING.LastValue; - plain.v_WSTRING = v_WSTRING.LastValue; - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - v_BOOL.LethargicWrite(plain.v_BOOL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_BYTE.LethargicWrite(plain.v_BYTE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WORD.LethargicWrite(plain.v_WORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DWORD.LethargicWrite(plain.v_DWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LWORD.LethargicWrite(plain.v_LWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMin.LethargicWrite(plain.v_SINTMin); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMax.LethargicWrite(plain.v_SINTMax); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_INT.LethargicWrite(plain.v_INT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DINT.LethargicWrite(plain.v_DINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LINT.LethargicWrite(plain.v_LINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_USINT.LethargicWrite(plain.v_USINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UINT.LethargicWrite(plain.v_UINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UDINT.LethargicWrite(plain.v_UDINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_ULINT.LethargicWrite(plain.v_ULINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_REAL.LethargicWrite(plain.v_REAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LREAL.LethargicWrite(plain.v_LREAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME.LethargicWrite(plain.v_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME.LethargicWrite(plain.v_LTIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE.LethargicWrite(plain.v_DATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE.LethargicWrite(plain.v_LDATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_CHAR.LethargicWrite(plain.v_CHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WCHAR.LethargicWrite(plain.v_WCHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_STRING.LethargicWrite(plain.v_STRING); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WSTRING.LethargicWrite(plain.v_WSTRING); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - v_BOOL.LethargicWrite(plain.v_BOOL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_BYTE.LethargicWrite(plain.v_BYTE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WORD.LethargicWrite(plain.v_WORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DWORD.LethargicWrite(plain.v_DWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LWORD.LethargicWrite(plain.v_LWORD); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMin.LethargicWrite(plain.v_SINTMin); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_SINTMax.LethargicWrite(plain.v_SINTMax); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_INT.LethargicWrite(plain.v_INT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DINT.LethargicWrite(plain.v_DINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LINT.LethargicWrite(plain.v_LINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_USINT.LethargicWrite(plain.v_USINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UINT.LethargicWrite(plain.v_UINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_UDINT.LethargicWrite(plain.v_UDINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_ULINT.LethargicWrite(plain.v_ULINT); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_REAL.LethargicWrite(plain.v_REAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LREAL.LethargicWrite(plain.v_LREAL); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME.LethargicWrite(plain.v_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME.LethargicWrite(plain.v_LTIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE.LethargicWrite(plain.v_DATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE.LethargicWrite(plain.v_LDATE); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_CHAR.LethargicWrite(plain.v_CHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WCHAR.LethargicWrite(plain.v_WCHAR); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_STRING.LethargicWrite(plain.v_STRING); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - v_WSTRING.LethargicWrite(plain.v_WSTRING); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); - await base.ShadowToPlainAsync(plain); - plain.v_BOOL = v_BOOL.Shadow; - plain.v_BYTE = v_BYTE.Shadow; - plain.v_WORD = v_WORD.Shadow; - plain.v_DWORD = v_DWORD.Shadow; - plain.v_LWORD = v_LWORD.Shadow; - plain.v_SINTMin = v_SINTMin.Shadow; - plain.v_SINTMax = v_SINTMax.Shadow; - plain.v_INT = v_INT.Shadow; - plain.v_DINT = v_DINT.Shadow; - plain.v_LINT = v_LINT.Shadow; - plain.v_USINT = v_USINT.Shadow; - plain.v_UINT = v_UINT.Shadow; - plain.v_UDINT = v_UDINT.Shadow; - plain.v_ULINT = v_ULINT.Shadow; - plain.v_REAL = v_REAL.Shadow; - plain.v_LREAL = v_LREAL.Shadow; - plain.v_TIME = v_TIME.Shadow; - plain.v_LTIME = v_LTIME.Shadow; - plain.v_DATE = v_DATE.Shadow; - plain.v_LDATE = v_LDATE.Shadow; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; - plain.v_CHAR = v_CHAR.Shadow; - plain.v_WCHAR = v_WCHAR.Shadow; - plain.v_STRING = v_STRING.Shadow; - plain.v_WSTRING = v_WSTRING.Shadow; - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) - { - await base.ShadowToPlainAsync(plain); - plain.v_BOOL = v_BOOL.Shadow; - plain.v_BYTE = v_BYTE.Shadow; - plain.v_WORD = v_WORD.Shadow; - plain.v_DWORD = v_DWORD.Shadow; - plain.v_LWORD = v_LWORD.Shadow; - plain.v_SINTMin = v_SINTMin.Shadow; - plain.v_SINTMax = v_SINTMax.Shadow; - plain.v_INT = v_INT.Shadow; - plain.v_DINT = v_DINT.Shadow; - plain.v_LINT = v_LINT.Shadow; - plain.v_USINT = v_USINT.Shadow; - plain.v_UINT = v_UINT.Shadow; - plain.v_UDINT = v_UDINT.Shadow; - plain.v_ULINT = v_ULINT.Shadow; - plain.v_REAL = v_REAL.Shadow; - plain.v_LREAL = v_LREAL.Shadow; - plain.v_TIME = v_TIME.Shadow; - plain.v_LTIME = v_LTIME.Shadow; - plain.v_DATE = v_DATE.Shadow; - plain.v_LDATE = v_LDATE.Shadow; - plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; - plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; - plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; - plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; - plain.v_CHAR = v_CHAR.Shadow; - plain.v_WCHAR = v_WCHAR.Shadow; - plain.v_STRING = v_STRING.Shadow; - plain.v_WSTRING = v_WSTRING.Shadow; - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) - { - await base.PlainToShadowAsync(plain); - v_BOOL.Shadow = plain.v_BOOL; - v_BYTE.Shadow = plain.v_BYTE; - v_WORD.Shadow = plain.v_WORD; - v_DWORD.Shadow = plain.v_DWORD; - v_LWORD.Shadow = plain.v_LWORD; - v_SINTMin.Shadow = plain.v_SINTMin; - v_SINTMax.Shadow = plain.v_SINTMax; - v_INT.Shadow = plain.v_INT; - v_DINT.Shadow = plain.v_DINT; - v_LINT.Shadow = plain.v_LINT; - v_USINT.Shadow = plain.v_USINT; - v_UINT.Shadow = plain.v_UINT; - v_UDINT.Shadow = plain.v_UDINT; - v_ULINT.Shadow = plain.v_ULINT; - v_REAL.Shadow = plain.v_REAL; - v_LREAL.Shadow = plain.v_LREAL; - v_TIME.Shadow = plain.v_TIME; - v_LTIME.Shadow = plain.v_LTIME; - v_DATE.Shadow = plain.v_DATE; - v_LDATE.Shadow = plain.v_LDATE; - v_TIME_OF_DAY.Shadow = plain.v_TIME_OF_DAY; - v_LTIME_OF_DAY.Shadow = plain.v_LTIME_OF_DAY; - v_DATE_AND_TIME.Shadow = plain.v_DATE_AND_TIME; - v_LDATE_AND_TIME.Shadow = plain.v_LDATE_AND_TIME; - v_CHAR.Shadow = plain.v_CHAR; - v_WCHAR.Shadow = plain.v_WCHAR; - v_STRING.Shadow = plain.v_STRING; - v_WSTRING.Shadow = plain.v_WSTRING; - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen; +using AXOpen.Data; + +namespace Tests_L1.Primitives +{ + public partial class PrimitivesDataEntity : AXOpen.Data.AxoDataEntity + { + public OnlinerBool v_BOOL { get; } + public OnlinerByte v_BYTE { get; } + public OnlinerWord v_WORD { get; } + public OnlinerDWord v_DWORD { get; } + public OnlinerLWord v_LWORD { get; } + public OnlinerSInt v_SINTMin { get; } + public OnlinerSInt v_SINTMax { get; } + public OnlinerInt v_INT { get; } + public OnlinerDInt v_DINT { get; } + public OnlinerLInt v_LINT { get; } + public OnlinerUSInt v_USINT { get; } + public OnlinerUInt v_UINT { get; } + public OnlinerUDInt v_UDINT { get; } + public OnlinerULInt v_ULINT { get; } + public OnlinerReal v_REAL { get; } + public OnlinerLReal v_LREAL { get; } + public OnlinerTime v_TIME { get; } + public OnlinerLTime v_LTIME { get; } + public OnlinerDate v_DATE { get; } + public OnlinerDate v_LDATE { get; } + public OnlinerTimeOfDay v_TIME_OF_DAY { get; } + public OnlinerLTimeOfDay v_LTIME_OF_DAY { get; } + public OnlinerDateTime v_DATE_AND_TIME { get; } + public OnlinerLDateTime v_LDATE_AND_TIME { get; } + public OnlinerChar v_CHAR { get; } + public OnlinerWChar v_WCHAR { get; } + public OnlinerString v_STRING { get; } + public OnlinerWString v_WSTRING { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public PrimitivesDataEntity(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + v_BOOL = @Connector.ConnectorAdapter.AdapterFactory.CreateBOOL(this, "v_BOOL", "v_BOOL"); + v_BYTE = @Connector.ConnectorAdapter.AdapterFactory.CreateBYTE(this, "v_BYTE", "v_BYTE"); + v_WORD = @Connector.ConnectorAdapter.AdapterFactory.CreateWORD(this, "v_WORD", "v_WORD"); + v_DWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateDWORD(this, "v_DWORD", "v_DWORD"); + v_LWORD = @Connector.ConnectorAdapter.AdapterFactory.CreateLWORD(this, "v_LWORD", "v_LWORD"); + v_SINTMin = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMin", "v_SINTMin"); + v_SINTMax = @Connector.ConnectorAdapter.AdapterFactory.CreateSINT(this, "v_SINTMax", "v_SINTMax"); + v_INT = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "v_INT", "v_INT"); + v_DINT = @Connector.ConnectorAdapter.AdapterFactory.CreateDINT(this, "v_DINT", "v_DINT"); + v_LINT = @Connector.ConnectorAdapter.AdapterFactory.CreateLINT(this, "v_LINT", "v_LINT"); + v_USINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUSINT(this, "v_USINT", "v_USINT"); + v_UINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUINT(this, "v_UINT", "v_UINT"); + v_UDINT = @Connector.ConnectorAdapter.AdapterFactory.CreateUDINT(this, "v_UDINT", "v_UDINT"); + v_ULINT = @Connector.ConnectorAdapter.AdapterFactory.CreateULINT(this, "v_ULINT", "v_ULINT"); + v_REAL = @Connector.ConnectorAdapter.AdapterFactory.CreateREAL(this, "v_REAL", "v_REAL"); + v_LREAL = @Connector.ConnectorAdapter.AdapterFactory.CreateLREAL(this, "v_LREAL", "v_LREAL"); + v_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME(this, "v_TIME", "v_TIME"); + v_LTIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME(this, "v_LTIME", "v_LTIME"); + v_DATE = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE(this, "v_DATE", "v_DATE"); + v_LDATE = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE(this, "v_LDATE", "v_LDATE"); + v_TIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateTIME_OF_DAY(this, "v_TIME_OF_DAY", "v_TIME_OF_DAY"); + v_LTIME_OF_DAY = @Connector.ConnectorAdapter.AdapterFactory.CreateLTIME_OF_DAY(this, "v_LTIME_OF_DAY", "v_LTIME_OF_DAY"); + v_DATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateDATE_AND_TIME(this, "v_DATE_AND_TIME", "v_DATE_AND_TIME"); + v_LDATE_AND_TIME = @Connector.ConnectorAdapter.AdapterFactory.CreateLDATE_AND_TIME(this, "v_LDATE_AND_TIME", "v_LDATE_AND_TIME"); + v_CHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateCHAR(this, "v_CHAR", "v_CHAR"); + v_WCHAR = @Connector.ConnectorAdapter.AdapterFactory.CreateWCHAR(this, "v_WCHAR", "v_WCHAR"); + v_STRING = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "v_STRING", "v_STRING"); + v_WSTRING = @Connector.ConnectorAdapter.AdapterFactory.CreateWSTRING(this, "v_WSTRING", "v_WSTRING"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.v_BOOL = v_BOOL.LastValue; + plain.v_BYTE = v_BYTE.LastValue; + plain.v_WORD = v_WORD.LastValue; + plain.v_DWORD = v_DWORD.LastValue; + plain.v_LWORD = v_LWORD.LastValue; + plain.v_SINTMin = v_SINTMin.LastValue; + plain.v_SINTMax = v_SINTMax.LastValue; + plain.v_INT = v_INT.LastValue; + plain.v_DINT = v_DINT.LastValue; + plain.v_LINT = v_LINT.LastValue; + plain.v_USINT = v_USINT.LastValue; + plain.v_UINT = v_UINT.LastValue; + plain.v_UDINT = v_UDINT.LastValue; + plain.v_ULINT = v_ULINT.LastValue; + plain.v_REAL = v_REAL.LastValue; + plain.v_LREAL = v_LREAL.LastValue; + plain.v_TIME = v_TIME.LastValue; + plain.v_LTIME = v_LTIME.LastValue; + plain.v_DATE = v_DATE.LastValue; + plain.v_LDATE = v_LDATE.LastValue; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.LastValue; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.LastValue; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.LastValue; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.LastValue; + plain.v_CHAR = v_CHAR.LastValue; + plain.v_WCHAR = v_WCHAR.LastValue; + plain.v_STRING = v_STRING.LastValue; + plain.v_WSTRING = v_WSTRING.LastValue; + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + v_BOOL.LethargicWrite(plain.v_BOOL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_BYTE.LethargicWrite(plain.v_BYTE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WORD.LethargicWrite(plain.v_WORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DWORD.LethargicWrite(plain.v_DWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LWORD.LethargicWrite(plain.v_LWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMin.LethargicWrite(plain.v_SINTMin); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMax.LethargicWrite(plain.v_SINTMax); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_INT.LethargicWrite(plain.v_INT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DINT.LethargicWrite(plain.v_DINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LINT.LethargicWrite(plain.v_LINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_USINT.LethargicWrite(plain.v_USINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UINT.LethargicWrite(plain.v_UINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UDINT.LethargicWrite(plain.v_UDINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_ULINT.LethargicWrite(plain.v_ULINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_REAL.LethargicWrite(plain.v_REAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LREAL.LethargicWrite(plain.v_LREAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME.LethargicWrite(plain.v_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME.LethargicWrite(plain.v_LTIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE.LethargicWrite(plain.v_DATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE.LethargicWrite(plain.v_LDATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_CHAR.LethargicWrite(plain.v_CHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WCHAR.LethargicWrite(plain.v_WCHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_STRING.LethargicWrite(plain.v_STRING); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WSTRING.LethargicWrite(plain.v_WSTRING); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + v_BOOL.LethargicWrite(plain.v_BOOL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_BYTE.LethargicWrite(plain.v_BYTE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WORD.LethargicWrite(plain.v_WORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DWORD.LethargicWrite(plain.v_DWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LWORD.LethargicWrite(plain.v_LWORD); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMin.LethargicWrite(plain.v_SINTMin); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_SINTMax.LethargicWrite(plain.v_SINTMax); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_INT.LethargicWrite(plain.v_INT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DINT.LethargicWrite(plain.v_DINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LINT.LethargicWrite(plain.v_LINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_USINT.LethargicWrite(plain.v_USINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UINT.LethargicWrite(plain.v_UINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_UDINT.LethargicWrite(plain.v_UDINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_ULINT.LethargicWrite(plain.v_ULINT); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_REAL.LethargicWrite(plain.v_REAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LREAL.LethargicWrite(plain.v_LREAL); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME.LethargicWrite(plain.v_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME.LethargicWrite(plain.v_LTIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE.LethargicWrite(plain.v_DATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE.LethargicWrite(plain.v_LDATE); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_TIME_OF_DAY.LethargicWrite(plain.v_TIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LTIME_OF_DAY.LethargicWrite(plain.v_LTIME_OF_DAY); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_DATE_AND_TIME.LethargicWrite(plain.v_DATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_LDATE_AND_TIME.LethargicWrite(plain.v_LDATE_AND_TIME); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_CHAR.LethargicWrite(plain.v_CHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WCHAR.LethargicWrite(plain.v_WCHAR); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_STRING.LethargicWrite(plain.v_STRING); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + v_WSTRING.LethargicWrite(plain.v_WSTRING); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); + await base.ShadowToPlainAsync(plain); + plain.v_BOOL = v_BOOL.Shadow; + plain.v_BYTE = v_BYTE.Shadow; + plain.v_WORD = v_WORD.Shadow; + plain.v_DWORD = v_DWORD.Shadow; + plain.v_LWORD = v_LWORD.Shadow; + plain.v_SINTMin = v_SINTMin.Shadow; + plain.v_SINTMax = v_SINTMax.Shadow; + plain.v_INT = v_INT.Shadow; + plain.v_DINT = v_DINT.Shadow; + plain.v_LINT = v_LINT.Shadow; + plain.v_USINT = v_USINT.Shadow; + plain.v_UINT = v_UINT.Shadow; + plain.v_UDINT = v_UDINT.Shadow; + plain.v_ULINT = v_ULINT.Shadow; + plain.v_REAL = v_REAL.Shadow; + plain.v_LREAL = v_LREAL.Shadow; + plain.v_TIME = v_TIME.Shadow; + plain.v_LTIME = v_LTIME.Shadow; + plain.v_DATE = v_DATE.Shadow; + plain.v_LDATE = v_LDATE.Shadow; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; + plain.v_CHAR = v_CHAR.Shadow; + plain.v_WCHAR = v_WCHAR.Shadow; + plain.v_STRING = v_STRING.Shadow; + plain.v_WSTRING = v_WSTRING.Shadow; + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) + { + await base.ShadowToPlainAsync(plain); + plain.v_BOOL = v_BOOL.Shadow; + plain.v_BYTE = v_BYTE.Shadow; + plain.v_WORD = v_WORD.Shadow; + plain.v_DWORD = v_DWORD.Shadow; + plain.v_LWORD = v_LWORD.Shadow; + plain.v_SINTMin = v_SINTMin.Shadow; + plain.v_SINTMax = v_SINTMax.Shadow; + plain.v_INT = v_INT.Shadow; + plain.v_DINT = v_DINT.Shadow; + plain.v_LINT = v_LINT.Shadow; + plain.v_USINT = v_USINT.Shadow; + plain.v_UINT = v_UINT.Shadow; + plain.v_UDINT = v_UDINT.Shadow; + plain.v_ULINT = v_ULINT.Shadow; + plain.v_REAL = v_REAL.Shadow; + plain.v_LREAL = v_LREAL.Shadow; + plain.v_TIME = v_TIME.Shadow; + plain.v_LTIME = v_LTIME.Shadow; + plain.v_DATE = v_DATE.Shadow; + plain.v_LDATE = v_LDATE.Shadow; + plain.v_TIME_OF_DAY = v_TIME_OF_DAY.Shadow; + plain.v_LTIME_OF_DAY = v_LTIME_OF_DAY.Shadow; + plain.v_DATE_AND_TIME = v_DATE_AND_TIME.Shadow; + plain.v_LDATE_AND_TIME = v_LDATE_AND_TIME.Shadow; + plain.v_CHAR = v_CHAR.Shadow; + plain.v_WCHAR = v_WCHAR.Shadow; + plain.v_STRING = v_STRING.Shadow; + plain.v_WSTRING = v_WSTRING.Shadow; + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain) + { + await base.PlainToShadowAsync(plain); + v_BOOL.Shadow = plain.v_BOOL; + v_BYTE.Shadow = plain.v_BYTE; + v_WORD.Shadow = plain.v_WORD; + v_DWORD.Shadow = plain.v_DWORD; + v_LWORD.Shadow = plain.v_LWORD; + v_SINTMin.Shadow = plain.v_SINTMin; + v_SINTMax.Shadow = plain.v_SINTMax; + v_INT.Shadow = plain.v_INT; + v_DINT.Shadow = plain.v_DINT; + v_LINT.Shadow = plain.v_LINT; + v_USINT.Shadow = plain.v_USINT; + v_UINT.Shadow = plain.v_UINT; + v_UDINT.Shadow = plain.v_UDINT; + v_ULINT.Shadow = plain.v_ULINT; + v_REAL.Shadow = plain.v_REAL; + v_LREAL.Shadow = plain.v_LREAL; + v_TIME.Shadow = plain.v_TIME; + v_LTIME.Shadow = plain.v_LTIME; + v_DATE.Shadow = plain.v_DATE; + v_LDATE.Shadow = plain.v_LDATE; + v_TIME_OF_DAY.Shadow = plain.v_TIME_OF_DAY; + v_LTIME_OF_DAY.Shadow = plain.v_LTIME_OF_DAY; + v_DATE_AND_TIME.Shadow = plain.v_DATE_AND_TIME; + v_LDATE_AND_TIME.Shadow = plain.v_LDATE_AND_TIME; + v_CHAR.Shadow = plain.v_CHAR; + v_WCHAR.Shadow = plain.v_WCHAR; + v_STRING.Shadow = plain.v_STRING; + v_WSTRING.Shadow = plain.v_WSTRING; + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain, global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (plain.v_BOOL != v_BOOL.LastValue) - somethingChanged = true; - if (plain.v_BYTE != v_BYTE.LastValue) - somethingChanged = true; - if (plain.v_WORD != v_WORD.LastValue) - somethingChanged = true; - if (plain.v_DWORD != v_DWORD.LastValue) - somethingChanged = true; - if (plain.v_LWORD != v_LWORD.LastValue) - somethingChanged = true; - if (plain.v_SINTMin != v_SINTMin.LastValue) - somethingChanged = true; - if (plain.v_SINTMax != v_SINTMax.LastValue) - somethingChanged = true; - if (plain.v_INT != v_INT.LastValue) - somethingChanged = true; - if (plain.v_DINT != v_DINT.LastValue) - somethingChanged = true; - if (plain.v_LINT != v_LINT.LastValue) - somethingChanged = true; - if (plain.v_USINT != v_USINT.LastValue) - somethingChanged = true; - if (plain.v_UINT != v_UINT.LastValue) - somethingChanged = true; - if (plain.v_UDINT != v_UDINT.LastValue) - somethingChanged = true; - if (plain.v_ULINT != v_ULINT.LastValue) - somethingChanged = true; - if (plain.v_REAL != v_REAL.LastValue) - somethingChanged = true; - if (plain.v_LREAL != v_LREAL.LastValue) - somethingChanged = true; - if (plain.v_TIME != v_TIME.LastValue) - somethingChanged = true; - if (plain.v_LTIME != v_LTIME.LastValue) - somethingChanged = true; - if (plain.v_DATE != v_DATE.LastValue) - somethingChanged = true; - if (plain.v_LDATE != v_LDATE.LastValue) - somethingChanged = true; - if (plain.v_TIME_OF_DAY != v_TIME_OF_DAY.LastValue) - somethingChanged = true; - if (plain.v_LTIME_OF_DAY != v_LTIME_OF_DAY.LastValue) - somethingChanged = true; - if (plain.v_DATE_AND_TIME != v_DATE_AND_TIME.LastValue) - somethingChanged = true; - if (plain.v_LDATE_AND_TIME != v_LDATE_AND_TIME.LastValue) - somethingChanged = true; - if (plain.v_CHAR != v_CHAR.LastValue) - somethingChanged = true; - if (plain.v_WCHAR != v_WCHAR.LastValue) - somethingChanged = true; - if (plain.v_STRING != v_STRING.LastValue) - somethingChanged = true; - if (plain.v_WSTRING != v_WSTRING.LastValue) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity plain, global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (plain.v_BOOL != v_BOOL.LastValue) + somethingChanged = true; + if (plain.v_BYTE != v_BYTE.LastValue) + somethingChanged = true; + if (plain.v_WORD != v_WORD.LastValue) + somethingChanged = true; + if (plain.v_DWORD != v_DWORD.LastValue) + somethingChanged = true; + if (plain.v_LWORD != v_LWORD.LastValue) + somethingChanged = true; + if (plain.v_SINTMin != v_SINTMin.LastValue) + somethingChanged = true; + if (plain.v_SINTMax != v_SINTMax.LastValue) + somethingChanged = true; + if (plain.v_INT != v_INT.LastValue) + somethingChanged = true; + if (plain.v_DINT != v_DINT.LastValue) + somethingChanged = true; + if (plain.v_LINT != v_LINT.LastValue) + somethingChanged = true; + if (plain.v_USINT != v_USINT.LastValue) + somethingChanged = true; + if (plain.v_UINT != v_UINT.LastValue) + somethingChanged = true; + if (plain.v_UDINT != v_UDINT.LastValue) + somethingChanged = true; + if (plain.v_ULINT != v_ULINT.LastValue) + somethingChanged = true; + if (plain.v_REAL != v_REAL.LastValue) + somethingChanged = true; + if (plain.v_LREAL != v_LREAL.LastValue) + somethingChanged = true; + if (plain.v_TIME != v_TIME.LastValue) + somethingChanged = true; + if (plain.v_LTIME != v_LTIME.LastValue) + somethingChanged = true; + if (plain.v_DATE != v_DATE.LastValue) + somethingChanged = true; + if (plain.v_LDATE != v_LDATE.LastValue) + somethingChanged = true; + if (plain.v_TIME_OF_DAY != v_TIME_OF_DAY.LastValue) + somethingChanged = true; + if (plain.v_LTIME_OF_DAY != v_LTIME_OF_DAY.LastValue) + somethingChanged = true; + if (plain.v_DATE_AND_TIME != v_DATE_AND_TIME.LastValue) + somethingChanged = true; + if (plain.v_LDATE_AND_TIME != v_LDATE_AND_TIME.LastValue) + somethingChanged = true; + if (plain.v_CHAR != v_CHAR.LastValue) + somethingChanged = true; + if (plain.v_WCHAR != v_WCHAR.LastValue) + somethingChanged = true; + if (plain.v_STRING != v_STRING.LastValue) + somethingChanged = true; + if (plain.v_WSTRING != v_WSTRING.LastValue) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.Primitives.PrimitivesDataEntity(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs index 2806a1cb4..06e50bfe3 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs @@ -1,164 +1,164 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1.Primitives -{ - public partial class PrimitivesDataManager : AXOpen.Data.AxoDataExchange - { - [AXOpen.Data.AxoDataEntityAttribute] - public Tests_L1.Primitives.PrimitivesDataEntity Set { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public PrimitivesDataManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - Set = new Tests_L1.Primitives.PrimitivesDataEntity(this, "Set", "Set"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Set._PlainToOnlineNoacAsync(plain.Set); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Set._PlainToOnlineNoacAsync(plain.Set); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); - await base.ShadowToPlainAsync(plain); - plain.Set = await Set.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) - { - await base.ShadowToPlainAsync(plain); - plain.Set = await Set.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) - { - await base.PlainToShadowAsync(plain); - await this.Set.PlainToShadowAsync(plain.Set); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1.Primitives +{ + public partial class PrimitivesDataManager : AXOpen.Data.AxoDataExchange + { + [AXOpen.Data.AxoDataEntityAttribute] + public Tests_L1.Primitives.PrimitivesDataEntity Set { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public PrimitivesDataManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + Set = new Tests_L1.Primitives.PrimitivesDataEntity(this, "Set", "Set"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Set._PlainToOnlineNoacAsync(plain.Set); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Set._PlainToOnlineNoacAsync(plain.Set); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain = new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); + await base.ShadowToPlainAsync(plain); + plain.Set = await Set.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) + { + await base.ShadowToPlainAsync(plain); + plain.Set = await Set.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain) + { + await base.PlainToShadowAsync(plain); + await this.Set.PlainToShadowAsync(plain.Set); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain, global::Pocos.Tests_L1.Primitives.PrimitivesDataManager latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await Set.DetectsAnyChangeAsync(plain.Set, latest.Set)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.Primitives.PrimitivesDataManager plain, global::Pocos.Tests_L1.Primitives.PrimitivesDataManager latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await Set.DetectsAnyChangeAsync(plain.Set, latest.Set)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.Primitives.PrimitivesDataManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs index 5e3d0abbb..7beeba48b 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs @@ -1,189 +1,189 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1 -{ - public partial class SharedEntityHeader : AXOpen.Data.AxoDataEntity - { - public OnlinerInt ComesFrom { get; } - public OnlinerInt GoesTo { get; } - public OnlinerString Name { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public SharedEntityHeader(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - ComesFrom = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "ComesFrom", "ComesFrom"); - GoesTo = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "GoesTo", "GoesTo"); - Name = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "Name", "Name"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.ComesFrom = ComesFrom.LastValue; - plain.GoesTo = GoesTo.LastValue; - plain.Name = Name.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.ComesFrom = ComesFrom.LastValue; - plain.GoesTo = GoesTo.LastValue; - plain.Name = Name.LastValue; - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 - plain.ComesFrom = ComesFrom.LastValue; - plain.GoesTo = GoesTo.LastValue; - plain.Name = Name.LastValue; - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.SharedEntityHeader plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - ComesFrom.LethargicWrite(plain.ComesFrom); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - GoesTo.LethargicWrite(plain.GoesTo); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - Name.LethargicWrite(plain.Name); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - ComesFrom.LethargicWrite(plain.ComesFrom); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - GoesTo.LethargicWrite(plain.GoesTo); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - Name.LethargicWrite(plain.Name); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); - await base.ShadowToPlainAsync(plain); - plain.ComesFrom = ComesFrom.Shadow; - plain.GoesTo = GoesTo.Shadow; - plain.Name = Name.Shadow; - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) - { - await base.ShadowToPlainAsync(plain); - plain.ComesFrom = ComesFrom.Shadow; - plain.GoesTo = GoesTo.Shadow; - plain.Name = Name.Shadow; - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) - { - await base.PlainToShadowAsync(plain); - ComesFrom.Shadow = plain.ComesFrom; - GoesTo.Shadow = plain.GoesTo; - Name.Shadow = plain.Name; - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1 +{ + public partial class SharedEntityHeader : AXOpen.Data.AxoDataEntity + { + public OnlinerInt ComesFrom { get; } + public OnlinerInt GoesTo { get; } + public OnlinerString Name { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public SharedEntityHeader(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + ComesFrom = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "ComesFrom", "ComesFrom"); + GoesTo = @Connector.ConnectorAdapter.AdapterFactory.CreateINT(this, "GoesTo", "GoesTo"); + Name = @Connector.ConnectorAdapter.AdapterFactory.CreateSTRING(this, "Name", "Name"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.ComesFrom = ComesFrom.LastValue; + plain.GoesTo = GoesTo.LastValue; + plain.Name = Name.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.ComesFrom = ComesFrom.LastValue; + plain.GoesTo = GoesTo.LastValue; + plain.Name = Name.LastValue; + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 + plain.ComesFrom = ComesFrom.LastValue; + plain.GoesTo = GoesTo.LastValue; + plain.Name = Name.LastValue; + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.SharedEntityHeader plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + ComesFrom.LethargicWrite(plain.ComesFrom); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + GoesTo.LethargicWrite(plain.GoesTo); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + Name.LethargicWrite(plain.Name); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + ComesFrom.LethargicWrite(plain.ComesFrom); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + GoesTo.LethargicWrite(plain.GoesTo); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + Name.LethargicWrite(plain.Name); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.SharedEntityHeader plain = new global::Pocos.Tests_L1.SharedEntityHeader(); + await base.ShadowToPlainAsync(plain); + plain.ComesFrom = ComesFrom.Shadow; + plain.GoesTo = GoesTo.Shadow; + plain.Name = Name.Shadow; + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) + { + await base.ShadowToPlainAsync(plain); + plain.ComesFrom = ComesFrom.Shadow; + plain.GoesTo = GoesTo.Shadow; + plain.Name = Name.Shadow; + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.SharedEntityHeader plain) + { + await base.PlainToShadowAsync(plain); + ComesFrom.Shadow = plain.ComesFrom; + GoesTo.Shadow = plain.GoesTo; + Name.Shadow = plain.Name; + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.SharedEntityHeader plain, global::Pocos.Tests_L1.SharedEntityHeader latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (plain.ComesFrom != ComesFrom.LastValue) - somethingChanged = true; - if (plain.GoesTo != GoesTo.LastValue) - somethingChanged = true; - if (plain.Name != Name.LastValue) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.SharedEntityHeader CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.SharedEntityHeader(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.SharedEntityHeader plain, global::Pocos.Tests_L1.SharedEntityHeader latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (plain.ComesFrom != ComesFrom.LastValue) + somethingChanged = true; + if (plain.GoesTo != GoesTo.LastValue) + somethingChanged = true; + if (plain.Name != Name.LastValue) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.SharedEntityHeader CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.SharedEntityHeader(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs index b4092eb1c..a6b85ac3b 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs @@ -1,164 +1,164 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; -using AXOpen.Core; -using AXOpen.Data; - -namespace Tests_L1 -{ - public partial class SharedEntityHeaderManager : AXOpen.Data.AxoDataExchange - { - [AXOpen.Data.AxoDataEntityAttribute] - public Tests_L1.SharedEntityHeader Set { get; } - - partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); - public SharedEntityHeaderManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) - { - Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); - PreConstruct(parent, readableTail, symbolTail); - Set = new Tests_L1.SharedEntityHeader(this, "Set", "Set"); - PostConstruct(parent, readableTail, symbolTail); - } - - public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) - { - return await (dynamic)this.OnlineToPlainAsync(priority); - } - - public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) - { - global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); - await this.ReadAsync(priority); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public new async Task _OnlineToPlainNoacAsync() - { - global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) - { -#pragma warning disable CS0612 - await base._OnlineToPlainNoacAsync(plain); -#pragma warning restore CS0612 -#pragma warning disable CS0612 - plain.Set = await Set._OnlineToPlainNoacAsync(); -#pragma warning restore CS0612 - return plain; - } - - public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) - { - await this.PlainToOnlineAsync((dynamic)plain, priority); - } - - public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain, eAccessPriority priority = eAccessPriority.Normal) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Set._PlainToOnlineNoacAsync(plain.Set); -#pragma warning restore CS0612 - return await this.WriteAsync(priority); - } - - [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] - [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] - public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) - { - await base._PlainToOnlineNoacAsync(plain); -#pragma warning disable CS0612 - await this.Set._PlainToOnlineNoacAsync(plain.Set); -#pragma warning restore CS0612 - } - - public async override Task ShadowToPlain() - { - return await (dynamic)this.ShadowToPlainAsync(); - } - - public new async Task ShadowToPlainAsync() - { - global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); - await base.ShadowToPlainAsync(plain); - plain.Set = await Set.ShadowToPlainAsync(); - return plain; - } - - protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) - { - await base.ShadowToPlainAsync(plain); - plain.Set = await Set.ShadowToPlainAsync(); - return plain; - } - - public async override Task PlainToShadow(T plain) - { - await this.PlainToShadowAsync((dynamic)plain); - } - - public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) - { - await base.PlainToShadowAsync(plain); - await this.Set.PlainToShadowAsync(plain.Set); - return this.RetrievePrimitives(); - } - - /// - public async override Task AnyChangeAsync(T plain) - { - return await this.DetectsAnyChangeAsync((dynamic)plain); - } - +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; +using AXOpen.Core; +using AXOpen.Data; + +namespace Tests_L1 +{ + public partial class SharedEntityHeaderManager : AXOpen.Data.AxoDataExchange + { + [AXOpen.Data.AxoDataEntityAttribute] + public Tests_L1.SharedEntityHeader Set { get; } + + partial void PreConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + partial void PostConstruct(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail); + public SharedEntityHeaderManager(AXSharp.Connector.ITwinObject parent, string readableTail, string symbolTail) : base(parent, readableTail, symbolTail) + { + Symbol = AXSharp.Connector.Connector.CreateSymbol(parent.Symbol, symbolTail); + PreConstruct(parent, readableTail, symbolTail); + Set = new Tests_L1.SharedEntityHeader(this, "Set", "Set"); + PostConstruct(parent, readableTail, symbolTail); + } + + public async override Task OnlineToPlain(eAccessPriority priority = eAccessPriority.Normal) + { + return await (dynamic)this.OnlineToPlainAsync(priority); + } + + public new async Task OnlineToPlainAsync(eAccessPriority priority = eAccessPriority.Normal) + { + global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); + await this.ReadAsync(priority); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public new async Task _OnlineToPlainNoacAsync() + { + global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `OnlineToPlain` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + protected async Task _OnlineToPlainNoacAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) + { +#pragma warning disable CS0612 + await base._OnlineToPlainNoacAsync(plain); +#pragma warning restore CS0612 +#pragma warning disable CS0612 + plain.Set = await Set._OnlineToPlainNoacAsync(); +#pragma warning restore CS0612 + return plain; + } + + public async override Task PlainToOnline(T plain, eAccessPriority priority = eAccessPriority.Normal) + { + await this.PlainToOnlineAsync((dynamic)plain, priority); + } + + public async Task> PlainToOnlineAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain, eAccessPriority priority = eAccessPriority.Normal) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Set._PlainToOnlineNoacAsync(plain.Set); +#pragma warning restore CS0612 + return await this.WriteAsync(priority); + } + + [Obsolete("This method should not be used if you indent to access the controllers data. Use `PlainToOnline` instead.")] + [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public async Task _PlainToOnlineNoacAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) + { + await base._PlainToOnlineNoacAsync(plain); +#pragma warning disable CS0612 + await this.Set._PlainToOnlineNoacAsync(plain.Set); +#pragma warning restore CS0612 + } + + public async override Task ShadowToPlain() + { + return await (dynamic)this.ShadowToPlainAsync(); + } + + public new async Task ShadowToPlainAsync() + { + global::Pocos.Tests_L1.SharedEntityHeaderManager plain = new global::Pocos.Tests_L1.SharedEntityHeaderManager(); + await base.ShadowToPlainAsync(plain); + plain.Set = await Set.ShadowToPlainAsync(); + return plain; + } + + protected async Task ShadowToPlainAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) + { + await base.ShadowToPlainAsync(plain); + plain.Set = await Set.ShadowToPlainAsync(); + return plain; + } + + public async override Task PlainToShadow(T plain) + { + await this.PlainToShadowAsync((dynamic)plain); + } + + public async Task> PlainToShadowAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain) + { + await base.PlainToShadowAsync(plain); + await this.Set.PlainToShadowAsync(plain.Set); + return this.RetrievePrimitives(); + } + + /// + public async override Task AnyChangeAsync(T plain) + { + return await this.DetectsAnyChangeAsync((dynamic)plain); + } + /// ///Compares if the current plain object has changed from the previous object.This method is used by the framework to determine if the object has changed and needs to be updated. ///[!NOTE] Any member in the hierarchy that is ignored by the compilers (e.g. when CompilerOmitAttribute is used) will not be compared, and therefore will not be detected as changed. /// - public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain, global::Pocos.Tests_L1.SharedEntityHeaderManager latest = null) - { - if (latest == null) - latest = await this._OnlineToPlainNoacAsync(); - var somethingChanged = false; - return await Task.Run(async () => - { - if (await base.DetectsAnyChangeAsync(plain)) - return true; - if (await Set.DetectsAnyChangeAsync(plain.Set, latest.Set)) - somethingChanged = true; - plain = latest; - return somethingChanged; - }); - } - - public new void Poll() - { - this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); - } - - public new global::Pocos.Tests_L1.SharedEntityHeaderManager CreateEmptyPoco() - { - return new global::Pocos.Tests_L1.SharedEntityHeaderManager(); - } - } + public new async Task DetectsAnyChangeAsync(global::Pocos.Tests_L1.SharedEntityHeaderManager plain, global::Pocos.Tests_L1.SharedEntityHeaderManager latest = null) + { + if (latest == null) + latest = await this._OnlineToPlainNoacAsync(); + var somethingChanged = false; + return await Task.Run(async () => + { + if (await base.DetectsAnyChangeAsync(plain)) + return true; + if (await Set.DetectsAnyChangeAsync(plain.Set, latest.Set)) + somethingChanged = true; + plain = latest; + return somethingChanged; + }); + } + + public new void Poll() + { + this.RetrievePrimitives().ToList().ForEach(x => x.Poll()); + } + + public new global::Pocos.Tests_L1.SharedEntityHeaderManager CreateEmptyPoco() + { + return new global::Pocos.Tests_L1.SharedEntityHeaderManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs index ba79b003a..6298b118d 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs @@ -1,7 +1,7 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; -using AXSharp.Abstractions.Presentation; +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; +using AXSharp.Abstractions.Presentation; using AXOpen.Data; \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs index 753141614..dc2cecbfc 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs @@ -1,6 +1,6 @@ -using System; -using AXSharp.Connector; -using AXSharp.Connector.ValueTypes; -using System.Collections.Generic; -using AXSharp.Connector.Localizations; +using System; +using AXSharp.Connector; +using AXSharp.Connector.ValueTypes; +using System.Collections.Generic; +using AXSharp.Connector.Localizations; using AXSharp.Abstractions.Presentation; \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs index 3d2a6ea43..9109d6cc5 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs @@ -1,21 +1,21 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.DataExchange - { - public partial class DataExchangeContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain - { - public DataExchangeContext() : base() - { - } - - public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); - public Tests_L1.SharedEntityHeaderManager SharedHeaderManager { get; set; } = new Tests_L1.SharedEntityHeaderManager(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.DataExchange + { + public partial class DataExchangeContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain + { + public DataExchangeContext() : base() + { + } + + public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); + public Tests_L1.SharedEntityHeaderManager SharedHeaderManager { get; set; } = new Tests_L1.SharedEntityHeaderManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs index 0fd149ad8..a48fca5d2 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs @@ -1,26 +1,26 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.Distributed - { - public partial class DistributedDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain - { - public DistributedDataContext() : base() - { - } - - public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); - public Tests_L1.SharedEntityHeaderManager HeaderManager_1 { get; set; } = new Tests_L1.SharedEntityHeaderManager(); - public Tests_L1.SharedEntityHeaderManager HeaderManager_2 { get; set; } = new Tests_L1.SharedEntityHeaderManager(); - public Tests_L1.StationDataManager StationManager_1 { get; set; } = new Tests_L1.StationDataManager(); - public Tests_L1.StationDataManager StationManager_2 { get; set; } = new Tests_L1.StationDataManager(); - public Tests_L1.FragmentData.FragmentProcessDataManager Fragment { get; set; } = new Tests_L1.FragmentData.FragmentProcessDataManager(); - public Tests_L1.Distributed.ExchangesWrappedInAxoObject AxoProcess { get; set; } = new Tests_L1.Distributed.ExchangesWrappedInAxoObject(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.Distributed + { + public partial class DistributedDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain + { + public DistributedDataContext() : base() + { + } + + public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); + public Tests_L1.SharedEntityHeaderManager HeaderManager_1 { get; set; } = new Tests_L1.SharedEntityHeaderManager(); + public Tests_L1.SharedEntityHeaderManager HeaderManager_2 { get; set; } = new Tests_L1.SharedEntityHeaderManager(); + public Tests_L1.StationDataManager StationManager_1 { get; set; } = new Tests_L1.StationDataManager(); + public Tests_L1.StationDataManager StationManager_2 { get; set; } = new Tests_L1.StationDataManager(); + public Tests_L1.FragmentData.FragmentProcessDataManager Fragment { get; set; } = new Tests_L1.FragmentData.FragmentProcessDataManager(); + public Tests_L1.Distributed.ExchangesWrappedInAxoObject AxoProcess { get; set; } = new Tests_L1.Distributed.ExchangesWrappedInAxoObject(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs index 12410fa56..70e37de19 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs @@ -1,22 +1,22 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.Distributed - { - public partial class ExchangesWrappedInAxoObject : AXOpen.Core.AxoObject, AXSharp.Connector.IPlain - { - public ExchangesWrappedInAxoObject() : base() - { - } - - public Tests_L1.SharedEntityHeaderManager Header { get; set; } = new Tests_L1.SharedEntityHeaderManager(); - public Tests_L1.StationDataManager Station_1 { get; set; } = new Tests_L1.StationDataManager(); - public Tests_L1.StationDataManager Station_2 { get; set; } = new Tests_L1.StationDataManager(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.Distributed + { + public partial class ExchangesWrappedInAxoObject : AXOpen.Core.AxoObject, AXSharp.Connector.IPlain + { + public ExchangesWrappedInAxoObject() : base() + { + } + + public Tests_L1.SharedEntityHeaderManager Header { get; set; } = new Tests_L1.SharedEntityHeaderManager(); + public Tests_L1.StationDataManager Station_1 { get; set; } = new Tests_L1.StationDataManager(); + public Tests_L1.StationDataManager Station_2 { get; set; } = new Tests_L1.StationDataManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs index 4adb7a31d..0890f1004 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs @@ -1,21 +1,21 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.FragmentData - { - public partial class FragmentDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain - { - public FragmentDataContext() : base() - { - } - - public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); - public Tests_L1.FragmentData.FragmentProcessDataManager DataManager { get; set; } = new Tests_L1.FragmentData.FragmentProcessDataManager(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.FragmentData + { + public partial class FragmentDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain + { + public FragmentDataContext() : base() + { + } + + public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); + public Tests_L1.FragmentData.FragmentProcessDataManager DataManager { get; set; } = new Tests_L1.FragmentData.FragmentProcessDataManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs index be54e5bbe..db1754f7d 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs @@ -1,21 +1,21 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.FragmentData - { - public partial class FragmentProcessDataManager : AXOpen.Data.AxoDataFragmentExchange, AXSharp.Connector.IPlain - { - public FragmentProcessDataManager() : base() - { - } - - public Tests_L1.SharedEntityHeaderManager EntityHeader { get; set; } = new Tests_L1.SharedEntityHeaderManager(); - public Tests_L1.StationDataManager Station { get; set; } = new Tests_L1.StationDataManager(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.FragmentData + { + public partial class FragmentProcessDataManager : AXOpen.Data.AxoDataFragmentExchange, AXSharp.Connector.IPlain + { + public FragmentProcessDataManager() : base() + { + } + + public Tests_L1.SharedEntityHeaderManager EntityHeader { get; set; } = new Tests_L1.SharedEntityHeaderManager(); + public Tests_L1.StationDataManager Station { get; set; } = new Tests_L1.StationDataManager(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs index 355746892..b1f6c4e1f 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs @@ -1,22 +1,22 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.PersistentData - { - public partial class ObjectWithPersistentMember : AXSharp.Connector.IPlain - { - public ObjectWithPersistentMember() - { - } - - public Int16 NotPersistentVariable { get; set; } - public Tests_L1.Primitives.InitializedPrimitives InitializedPrimitives { get; set; } = new Tests_L1.Primitives.InitializedPrimitives(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.PersistentData + { + public partial class ObjectWithPersistentMember : AXSharp.Connector.IPlain + { + public ObjectWithPersistentMember() + { + } + + public Int16 NotPersistentVariable { get; set; } + public Tests_L1.Primitives.InitializedPrimitives InitializedPrimitives { get; set; } = new Tests_L1.Primitives.InitializedPrimitives(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs index 6ec507d47..4118b1e58 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs @@ -1,22 +1,22 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.PersistentData - { - public partial class PersistentDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain - { - public PersistentDataContext() : base() - { - } - - public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); - public AXOpen.Data.AxoDataPersistentExchange DataManager { get; set; } = new AXOpen.Data.AxoDataPersistentExchange(); - public Tests_L1.PersistentData.PersistentRootObject PersistentRootObject { get; set; } = new Tests_L1.PersistentData.PersistentRootObject(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.PersistentData + { + public partial class PersistentDataContext : AXOpen.Core.AxoContext, AXSharp.Connector.IPlain + { + public PersistentDataContext() : base() + { + } + + public AXOpen.Core.AxoObject _rootObject { get; set; } = new AXOpen.Core.AxoObject(); + public AXOpen.Data.AxoDataPersistentExchange DataManager { get; set; } = new AXOpen.Data.AxoDataPersistentExchange(); + public Tests_L1.PersistentData.PersistentRootObject PersistentRootObject { get; set; } = new Tests_L1.PersistentData.PersistentRootObject(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs index 912cfb3ff..eea795766 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs @@ -1,24 +1,24 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.PersistentData - { - public partial class PersistentRootObject : AXSharp.Connector.IPlain - { - public PersistentRootObject() - { - } - - public Boolean NotPersistentVariable { get; set; } - public Int16 PersistentVariable_1 { get; set; } - public Int16 PersistentVariable_2 { get; set; } - public Tests_L1.PersistentData.ObjectWithPersistentMember PropertyWithPersistentMember { get; set; } = new Tests_L1.PersistentData.ObjectWithPersistentMember(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.PersistentData + { + public partial class PersistentRootObject : AXSharp.Connector.IPlain + { + public PersistentRootObject() + { + } + + public Boolean NotPersistentVariable { get; set; } + public Int16 PersistentVariable_1 { get; set; } + public Int16 PersistentVariable_2 { get; set; } + public Tests_L1.PersistentData.ObjectWithPersistentMember PropertyWithPersistentMember { get; set; } = new Tests_L1.PersistentData.ObjectWithPersistentMember(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs index 166cad51a..43773020b 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs @@ -1,48 +1,48 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.Primitives - { - public partial class InitializedPrimitives : AXSharp.Connector.IPlain - { - public InitializedPrimitives() - { - } - - public Boolean v_BOOL { get; set; } - public Byte v_BYTE { get; set; } - public UInt16 v_WORD { get; set; } - public UInt32 v_DWORD { get; set; } - public UInt64 v_LWORD { get; set; } - public SByte v_SINTMin { get; set; } - public SByte v_SINTMax { get; set; } - public Int16 v_INT { get; set; } - public Int32 v_DINT { get; set; } - public Int64 v_LINT { get; set; } - public Byte v_USINT { get; set; } - public UInt16 v_UINT { get; set; } - public UInt32 v_UDINT { get; set; } - public UInt64 v_ULINT { get; set; } - public Single v_REAL { get; set; } - public Double v_LREAL { get; set; } - public TimeSpan v_TIME { get; set; } = default(TimeSpan); - public TimeSpan v_LTIME { get; set; } = default(TimeSpan); - public DateOnly v_DATE { get; set; } = new DateOnly(1970, 1, 1); - public DateOnly v_LDATE { get; set; } = new DateOnly(1970, 1, 1); - public TimeSpan v_TIME_OF_DAY { get; set; } = default(TimeSpan); - public TimeSpan v_LTIME_OF_DAY { get; set; } = default(TimeSpan); - public DateTime v_DATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); - public DateTime v_LDATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); - public Char v_CHAR { get; set; } - public Char v_WCHAR { get; set; } - public string v_STRING { get; set; } = string.Empty; - public string v_WSTRING { get; set; } = string.Empty; - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.Primitives + { + public partial class InitializedPrimitives : AXSharp.Connector.IPlain + { + public InitializedPrimitives() + { + } + + public Boolean v_BOOL { get; set; } + public Byte v_BYTE { get; set; } + public UInt16 v_WORD { get; set; } + public UInt32 v_DWORD { get; set; } + public UInt64 v_LWORD { get; set; } + public SByte v_SINTMin { get; set; } + public SByte v_SINTMax { get; set; } + public Int16 v_INT { get; set; } + public Int32 v_DINT { get; set; } + public Int64 v_LINT { get; set; } + public Byte v_USINT { get; set; } + public UInt16 v_UINT { get; set; } + public UInt32 v_UDINT { get; set; } + public UInt64 v_ULINT { get; set; } + public Single v_REAL { get; set; } + public Double v_LREAL { get; set; } + public TimeSpan v_TIME { get; set; } = default(TimeSpan); + public TimeSpan v_LTIME { get; set; } = default(TimeSpan); + public DateOnly v_DATE { get; set; } = new DateOnly(1970, 1, 1); + public DateOnly v_LDATE { get; set; } = new DateOnly(1970, 1, 1); + public TimeSpan v_TIME_OF_DAY { get; set; } = default(TimeSpan); + public TimeSpan v_LTIME_OF_DAY { get; set; } = default(TimeSpan); + public DateTime v_DATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); + public DateTime v_LDATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); + public Char v_CHAR { get; set; } + public Char v_WCHAR { get; set; } + public string v_STRING { get; set; } = string.Empty; + public string v_WSTRING { get; set; } = string.Empty; + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs index 54c1499f8..2adf1244a 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs @@ -1,48 +1,48 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.Primitives - { - public partial class PrimitivesDataEntity : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain - { - public PrimitivesDataEntity() : base() - { - } - - public Boolean v_BOOL { get; set; } - public Byte v_BYTE { get; set; } - public UInt16 v_WORD { get; set; } - public UInt32 v_DWORD { get; set; } - public UInt64 v_LWORD { get; set; } - public SByte v_SINTMin { get; set; } - public SByte v_SINTMax { get; set; } - public Int16 v_INT { get; set; } - public Int32 v_DINT { get; set; } - public Int64 v_LINT { get; set; } - public Byte v_USINT { get; set; } - public UInt16 v_UINT { get; set; } - public UInt32 v_UDINT { get; set; } - public UInt64 v_ULINT { get; set; } - public Single v_REAL { get; set; } - public Double v_LREAL { get; set; } - public TimeSpan v_TIME { get; set; } = default(TimeSpan); - public TimeSpan v_LTIME { get; set; } = default(TimeSpan); - public DateOnly v_DATE { get; set; } = new DateOnly(1970, 1, 1); - public DateOnly v_LDATE { get; set; } = new DateOnly(1970, 1, 1); - public TimeSpan v_TIME_OF_DAY { get; set; } = default(TimeSpan); - public TimeSpan v_LTIME_OF_DAY { get; set; } = default(TimeSpan); - public DateTime v_DATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); - public DateTime v_LDATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); - public Char v_CHAR { get; set; } - public Char v_WCHAR { get; set; } - public string v_STRING { get; set; } = string.Empty; - public string v_WSTRING { get; set; } = string.Empty; - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.Primitives + { + public partial class PrimitivesDataEntity : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain + { + public PrimitivesDataEntity() : base() + { + } + + public Boolean v_BOOL { get; set; } + public Byte v_BYTE { get; set; } + public UInt16 v_WORD { get; set; } + public UInt32 v_DWORD { get; set; } + public UInt64 v_LWORD { get; set; } + public SByte v_SINTMin { get; set; } + public SByte v_SINTMax { get; set; } + public Int16 v_INT { get; set; } + public Int32 v_DINT { get; set; } + public Int64 v_LINT { get; set; } + public Byte v_USINT { get; set; } + public UInt16 v_UINT { get; set; } + public UInt32 v_UDINT { get; set; } + public UInt64 v_ULINT { get; set; } + public Single v_REAL { get; set; } + public Double v_LREAL { get; set; } + public TimeSpan v_TIME { get; set; } = default(TimeSpan); + public TimeSpan v_LTIME { get; set; } = default(TimeSpan); + public DateOnly v_DATE { get; set; } = new DateOnly(1970, 1, 1); + public DateOnly v_LDATE { get; set; } = new DateOnly(1970, 1, 1); + public TimeSpan v_TIME_OF_DAY { get; set; } = default(TimeSpan); + public TimeSpan v_LTIME_OF_DAY { get; set; } = default(TimeSpan); + public DateTime v_DATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); + public DateTime v_LDATE_AND_TIME { get; set; } = new DateTime(1970, 1, 1); + public Char v_CHAR { get; set; } + public Char v_WCHAR { get; set; } + public string v_STRING { get; set; } = string.Empty; + public string v_WSTRING { get; set; } = string.Empty; + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs index 318ebc255..434225031 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs @@ -1,20 +1,20 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1.Primitives - { - public partial class PrimitivesDataManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain - { - public PrimitivesDataManager() : base() - { - } - - public Tests_L1.Primitives.PrimitivesDataEntity Set { get; set; } = new Tests_L1.Primitives.PrimitivesDataEntity(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1.Primitives + { + public partial class PrimitivesDataManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain + { + public PrimitivesDataManager() : base() + { + } + + public Tests_L1.Primitives.PrimitivesDataEntity Set { get; set; } = new Tests_L1.Primitives.PrimitivesDataEntity(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs index d0d663c87..f7b0d38da 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs @@ -1,22 +1,22 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1 - { - public partial class SharedEntityHeader : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain - { - public SharedEntityHeader() : base() - { - } - - public Int16 ComesFrom { get; set; } - public Int16 GoesTo { get; set; } - public string Name { get; set; } = string.Empty; - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1 + { + public partial class SharedEntityHeader : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain + { + public SharedEntityHeader() : base() + { + } + + public Int16 ComesFrom { get; set; } + public Int16 GoesTo { get; set; } + public string Name { get; set; } = string.Empty; + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs index d13e4a9dd..71d819b00 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs @@ -1,20 +1,20 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1 - { - public partial class SharedEntityHeaderManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain - { - public SharedEntityHeaderManager() : base() - { - } - - public Tests_L1.SharedEntityHeader Set { get; set; } = new Tests_L1.SharedEntityHeader(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1 + { + public partial class SharedEntityHeaderManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain + { + public SharedEntityHeaderManager() : base() + { + } + + public Tests_L1.SharedEntityHeader Set { get; set; } = new Tests_L1.SharedEntityHeader(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs index 6decc88c8..dff9d2d82 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs @@ -1,20 +1,20 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1 - { - public partial class StationData : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain - { - public StationData() : base() - { - } - - public UInt64 CounterDelay { get; set; } - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1 + { + public partial class StationData : AXOpen.Data.AxoDataEntity, AXSharp.Connector.IPlain + { + public StationData() : base() + { + } + + public UInt64 CounterDelay { get; set; } + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs index 97e766c69..d5c2c0b49 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs @@ -1,20 +1,20 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Core; -using Pocos.AXOpen.Data; - -namespace Pocos -{ - namespace Tests_L1 - { - public partial class StationDataManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain - { - public StationDataManager() : base() - { - } - - public Tests_L1.StationData Set { get; set; } = new Tests_L1.StationData(); - } - } +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Core; +using Pocos.AXOpen.Data; + +namespace Pocos +{ + namespace Tests_L1 + { + public partial class StationDataManager : AXOpen.Data.AxoDataExchange, AXSharp.Connector.IPlain + { + public StationDataManager() : base() + { + } + + public Tests_L1.StationData Set { get; set; } = new Tests_L1.StationData(); + } + } } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs index 50b5423f1..73745e0f7 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs @@ -1,8 +1,8 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; -using Pocos.AXOpen.Data; - -namespace Pocos -{ +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; +using Pocos.AXOpen.Data; + +namespace Pocos +{ } \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs index ca840d570..7269d2472 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs @@ -1,7 +1,7 @@ -using System; -using AXSharp.Abstractions.Presentation; -using AXSharp.Connector; - -namespace Pocos -{ +using System; +using AXSharp.Abstractions.Presentation; +using AXSharp.Connector; + +namespace Pocos +{ } \ No newline at end of file From ecc87e4d2c55666ddf6e7c7679f2c694edb2093f Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:59:35 +0100 Subject: [PATCH 12/30] add_css --- axopen.gitattributes | 3 +++ 1 file changed, 3 insertions(+) diff --git a/axopen.gitattributes b/axopen.gitattributes index 3c5161b27..18d2d489f 100644 --- a/axopen.gitattributes +++ b/axopen.gitattributes @@ -12,6 +12,9 @@ *.yaml text eol=lf *.yml text eol=lf *.json text eol=lf +*.css text eol=lf +*.cs text eol=lf + # Windows-native scripts that often *must* be CRLF in the working tree # (repo still stores LF; checkout converts to CRLF) From 066f25a55c61f2696d8ae670cc8978c5582871d0 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Tue, 17 Feb 2026 17:16:28 +0100 Subject: [PATCH 13/30] gitattributes file renamed --- axopen.gitattributes => .gitattributes | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename axopen.gitattributes => .gitattributes (100%) diff --git a/axopen.gitattributes b/.gitattributes similarity index 100% rename from axopen.gitattributes rename to .gitattributes From b1d915e3211a6345b167c137199e7964686f40a2 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Wed, 18 Feb 2026 13:18:13 +0100 Subject: [PATCH 14/30] data tests renormalize --- .editorconfig | 6 ++++++ .../tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs | 2 +- .../ix/.g/Onliners/DataExchange/Context.g.cs | 2 +- .../ix/.g/Onliners/Distributed/Context.g.cs | 2 +- .../Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs | 2 +- .../ix/.g/Onliners/FragmentData/Context.g.cs | 2 +- .../ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs | 2 +- .../Onliners/PersistentData/ObjectWithPersistentMember.g.cs | 2 +- .../.g/Onliners/PersistentData/PersistentDataContext.g.cs | 2 +- .../ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs | 2 +- .../ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs | 2 +- .../ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs | 2 +- .../ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs | 2 +- .../.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs | 2 +- .../SharedEntityHeader/SharedEntityHeaderManager.g.cs | 2 +- .../AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs | 2 +- .../tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs | 2 +- .../ix/.g/POCO/DataExchange/Context.g.cs | 2 +- .../ix/.g/POCO/Distributed/Context.g.cs | 2 +- .../ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs | 2 +- .../ix/.g/POCO/FragmentData/Context.g.cs | 2 +- .../ix/.g/POCO/FragmentData/FragmentDataManager.g.cs | 2 +- .../.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs | 2 +- .../ix/.g/POCO/PersistentData/PersistentDataContext.g.cs | 2 +- .../ix/.g/POCO/PersistentData/PersistentRootObject.g.cs | 2 +- .../ix/.g/POCO/Primitives/InitializedPrimitives.g.cs | 2 +- .../ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs | 2 +- .../ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs | 2 +- .../ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs | 2 +- .../POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs | 2 +- .../ix/.g/POCO/StationData/StationData.g.cs | 2 +- .../ix/.g/POCO/StationData/StationDataManager.g.cs | 2 +- .../AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs | 2 +- src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs | 2 +- 34 files changed, 39 insertions(+), 33 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..7ae9c18a8 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,6 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true \ No newline at end of file diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs index 7ea402ce4..c7aa61527 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Configurations.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs index 20a5fb12d..3469c5e14 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/DataExchange/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs index 70bd345f6..f8c32a898 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs index 96d4a2cf2..93b4aa2ae 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Distributed/ExchangesWrappedInAxoObject.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs index b6e04ef49..adb015477 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs index 4de915287..cab74ffc3 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/FragmentData/FragmentDataManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs index 04f1c3814..b505f62ff 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/ObjectWithPersistentMember.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs index 4d76297d0..4ddc092d0 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentDataContext.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs index d767a3162..a4ba9e286 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/PersistentData/PersistentRootObject.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs index bae781597..b14f9c5b2 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/InitializedPrimitives.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs index 6aab08623..904be0996 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataEntity.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs index 06e50bfe3..ea5dbb5c3 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/Primitives/PrimitivesDataManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs index 7beeba48b..4197a250e 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeader.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs index a6b85ac3b..a7d5747b1 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/SharedEntityHeader/SharedEntityHeaderManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs index 6298b118d..37e095540 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/configuration.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs index dc2cecbfc..6c546f63c 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/Onliners/program.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Connector; using AXSharp.Connector.ValueTypes; using System.Collections.Generic; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs index 9109d6cc5..7120ed90b 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/DataExchange/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs index a48fca5d2..01f9af127 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs index 70e37de19..1ca17717c 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Distributed/ExchangesWrappedInAxoObject.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs index 0890f1004..b9e22abe5 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/Context.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs index db1754f7d..b6052c64e 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/FragmentData/FragmentDataManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs index b1f6c4e1f..feb713608 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/ObjectWithPersistentMember.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs index 4118b1e58..1c03abf6c 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentDataContext.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs index eea795766..b63aa3111 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/PersistentData/PersistentRootObject.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs index 43773020b..89100a6f5 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/InitializedPrimitives.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs index 2adf1244a..0d82507cf 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataEntity.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs index 434225031..e31a11593 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/Primitives/PrimitivesDataManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs index f7b0d38da..4e0f13a4e 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeader.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs index 71d819b00..a60642a7b 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/SharedEntityHeader/SharedEntityHeaderManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs index dff9d2d82..d66ce0144 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationData.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs index d5c2c0b49..d32b69217 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/StationData/StationDataManager.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Core; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs index 73745e0f7..e05c6d25c 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/configuration.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; using Pocos.AXOpen.Data; diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs index 7269d2472..e23d372b9 100644 --- a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/POCO/program.g.cs @@ -1,4 +1,4 @@ -using System; +using System; using AXSharp.Abstractions.Presentation; using AXSharp.Connector; From e59bf984f5b8971867b625806528ae236844f50b Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 09:58:23 +0100 Subject: [PATCH 15/30] update AXSharp package versions to 0.47.0-alpha.431 --- .config/dotnet-tools.json | 6 +++--- Directory.Packages.props | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 1eb459bbe..4cfb9a59c 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.47.0-alpha.405", + "version": "0.47.0-alpha.431", "commands": [ "ixc" ], @@ -17,14 +17,14 @@ "rollForward": false }, "AXSharp.ixd": { - "version": "0.47.0-alpha.405", + "version": "0.47.0-alpha.431", "commands": [ "ixd" ], "rollForward": false }, "AXSharp.ixr": { - "version": "0.47.0-alpha.405", + "version": "0.47.0-alpha.431", "commands": [ "ixr" ], diff --git a/Directory.Packages.props b/Directory.Packages.props index f0205a1fb..9f91ffdf8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,4 +1,4 @@ - + true false @@ -11,11 +11,11 @@ - - - - - + + + + + From 0d298395b0276eb562b86e1d7f23119870b0763a Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 10:21:24 +0100 Subject: [PATCH 16/30] update Inxton.Operon package version to 0.3.0-alpha.113 --- Directory.Packages.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 9f91ffdf8..fe9faf0ca 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -16,7 +16,7 @@ - + From b9ea7b315f24448ab5f4348a83692bfbc55c9c3f Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 12:08:21 +0100 Subject: [PATCH 17/30] line endings normalized in the expected results of the integration tests --- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../ix/.g/PlcResources.g.cs | 26 +++++++++++++ .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../wwwroot/css/operon-variables.css | 38 ++++++++++++------- .../src/wwwroot/css/operon-variables.css | 38 ++++++++++++------- 31 files changed, 776 insertions(+), 390 deletions(-) create mode 100644 src/data/tests/AXOpen.Data.Tests_L1/ix/.g/PlcResources.g.cs diff --git a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css +++ b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css +++ b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css +++ b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css +++ b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/PlcResources.g.cs b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/PlcResources.g.cs new file mode 100644 index 000000000..62961ca50 --- /dev/null +++ b/src/data/tests/AXOpen.Data.Tests_L1/ix/.g/PlcResources.g.cs @@ -0,0 +1,26 @@ + +using System.Reflection; +using AXSharp.Connector.Localizations; + +namespace axopen_data_tests_l1 +{ + public sealed class PlcTranslator : Translator + { + private static readonly PlcTranslator instance = new PlcTranslator(); + + public static PlcTranslator Instance + { + get + { + return instance; + } + } + + private PlcTranslator() + { + var assembly = Assembly.GetAssembly(typeof(axopen_data_tests_l1.PlcTranslator)); + var resource = assembly.GetType("axopen_data_tests_l1.Resources.PlcStringResources"); + this.SetLocalizationResource(resource, assembly); + } + } +} \ No newline at end of file diff --git a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css +++ b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css +++ b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css +++ b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } diff --git a/src/styling/src/wwwroot/css/operon-variables.css b/src/styling/src/wwwroot/css/operon-variables.css index bd42276b1..18145dd65 100644 --- a/src/styling/src/wwwroot/css/operon-variables.css +++ b/src/styling/src/wwwroot/css/operon-variables.css @@ -1,4 +1,4 @@ -@layer theme { +@layer theme { :root, :host { --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @@ -133,8 +133,8 @@ --color-danger-light: #FFDCDA; --color-info: #2B8CC4; --color-info-light: #D4ECF7; - --color-noactive: #7C7C7C; - --color-noactive-light: #DEE0E2; + --color-neutral: #7C7C7C; + --color-neutral-light: #DEE0E2; /* #endregion */ /* #region Result colors */ --color-result-failed: #D0190F; @@ -168,12 +168,13 @@ --color-quality: #EC9811; /* end of prodinsight colors */ /* downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #EC9811; - --color-downtime-operator: #F08584; --color-downtime-working: #B6D069; - --color-downtime-technical: #9885A9; --color-downtime-planned: #7DCDD2; + --color-downtime-unassigned: #C7C7C7; + --color-downtime-technical: #9885A9; + --color-downtime-operator: #F08584; + --color-downtime-material: #EC9811; + --color-downtime-external: #9E1912; /* end of downtime colors */ /* buttons colors */ --color-btn-primary: var(--color-primary); @@ -186,20 +187,31 @@ --color-btn-warning-hover: var(--color-warning-light); --color-btn-info: var(--color-info); --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); + --color-btn-neutral: var(--color-neutral); + --color-btn-neutral-hover: var(--color-neutral-light); --color-btn-outline-bg: transparent; --color-btn-no-bg-bg: transparent; /* end of buttons colors */ - --animate-pulse-danger: pulse-danger 2s ease-in-out infinite; - @keyframes pulse-danger { + @keyframes ripple { + 0% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(1.05); + opacity: 0; + } + } + + @keyframes wiggle { 0%, 100% { - box-shadow: 0 0 0 0 color-mix(in srgb, var(--color-danger) 30%, transparent); + transform: rotate(-3deg); } 50% { - box-shadow: 0 0 0 6px color-mix(in srgb, var(--color-danger) 0%, transparent); + transform: rotate(3deg); } } } From ca0ca6314c5656d67261711c7a1bf505e5362ef4 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 14:41:20 +0100 Subject: [PATCH 18/30] update AXSharp package versions to 0.47.0-alpha.435 and Inxton.Operon to 0.3.0-alpha.114 --- Directory.Packages.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index fe9faf0ca..9776c0288 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,12 +11,12 @@ - - - - - - + + + + + + From d3206f4522b754ab0263b54de7331718919a7736 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 15:07:18 +0100 Subject: [PATCH 19/30] wip --- .config/dotnet-tools.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 4cfb9a59c..d75490be2 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.47.0-alpha.431", + "version": "0.47.0-alpha.435", "commands": [ "ixc" ], @@ -17,14 +17,14 @@ "rollForward": false }, "AXSharp.ixd": { - "version": "0.47.0-alpha.431", + "version": "0.47.0-alpha.435", "commands": [ "ixd" ], "rollForward": false }, "AXSharp.ixr": { - "version": "0.47.0-alpha.431", + "version": "0.47.0-alpha.435", "commands": [ "ixr" ], From cb6bf5f101159982488638731d2778b0abbb851c Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:34:33 +0100 Subject: [PATCH 20/30] update AXSharp package versions to 0.47.0-alpha.439 --- .config/dotnet-tools.json | 9 +++++---- Directory.Packages.props | 11 ++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index d75490be2..4f7f693ff 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -1,9 +1,9 @@ -{ +{ "version": 1, "isRoot": true, "tools": { "AXSharp.ixc": { - "version": "0.47.0-alpha.435", + "version": "0.47.0-alpha.439", "commands": [ "ixc" ], @@ -17,14 +17,14 @@ "rollForward": false }, "AXSharp.ixd": { - "version": "0.47.0-alpha.435", + "version": "0.47.0-alpha.439", "commands": [ "ixd" ], "rollForward": false }, "AXSharp.ixr": { - "version": "0.47.0-alpha.435", + "version": "0.47.0-alpha.439", "commands": [ "ixr" ], @@ -61,3 +61,4 @@ + diff --git a/Directory.Packages.props b/Directory.Packages.props index 9776c0288..35a9fb605 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -11,11 +11,11 @@ - - - - - + + + + + @@ -98,3 +98,4 @@ + From 370fc749d842cc4f80e350780e65b7e33ba420a0 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:48:49 +0100 Subject: [PATCH 21/30] normalize line endings for PowerShell scripts and update JSON writing function to use LF --- .gitattributes | 2 +- scripts/update_axsharp_versions.ps1 | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.gitattributes b/.gitattributes index 18d2d489f..03b6f4958 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14,13 +14,13 @@ *.json text eol=lf *.css text eol=lf *.cs text eol=lf +*.ps1 text eol=lf # Windows-native scripts that often *must* be CRLF in the working tree # (repo still stores LF; checkout converts to CRLF) *.bat text eol=crlf *.cmd text eol=crlf -*.ps1 text eol=crlf # Binary files (never touch line endings) *.png -text diff --git a/scripts/update_axsharp_versions.ps1 b/scripts/update_axsharp_versions.ps1 index 7476c2aec..839983692 100644 --- a/scripts/update_axsharp_versions.ps1 +++ b/scripts/update_axsharp_versions.ps1 @@ -57,6 +57,12 @@ $propsPath = Join-Path $repoRoot 'Directory.Packages.props' if(-not (Test-Path $toolsJsonPath)){ Write-Err ".config/dotnet-tools.json not found at $toolsJsonPath"; exit 1 } if(-not (Test-Path $propsPath)){ Write-Err "Directory.Packages.props not found at $propsPath"; exit 1 } +function Write-Utf8NoBom-LF { + param([string]$Path, [string]$Content) + $lf = ($Content -replace "`r`n", "`n") -replace "`r", "`n" + [System.IO.File]::WriteAllText($Path, $lf, [System.Text.UTF8Encoding]::new($false)) +} + # Discover token from environment if not explicitly provided if(-not $Token){ $envTokenCandidates = @('AXSHARP_FEED_TOKEN','GITHUB_PACKAGES_TOKEN','GITHUB_TOKEN','GH_TOKEN','NUGET_TOKEN') @@ -254,10 +260,14 @@ foreach($k in $operonToolKeys){ if(-not $DryRun){ if($NormalizeJson){ - $newJson = $toolsObj | ConvertTo-Json -Depth 10 + #$newJson = $toolsObj | ConvertTo-Json -Depth 10 # Normalize spacing after colons to a single space - $newJson = ($newJson -split "`r?`n") | ForEach-Object { $_ -replace '":\s+','": ' } | Out-String - Set-Content -Path $toolsJsonPath -Value ($newJson.TrimEnd() + [Environment]::NewLine) -Encoding UTF8 + #$newJson = ($newJson -split "`r?`n") | ForEach-Object { $_ -replace '":\s+','": ' } | Out-String + #Set-Content -Path $toolsJsonPath -Value ($newJson.TrimEnd() + [Environment]::NewLine) -Encoding UTF8 + $newJson = $toolsObj | ConvertTo-Json -Depth 10 + $newJson = (($newJson -split "`r?`n") | ForEach-Object { $_ -replace '":\s+','": ' }) -join "`n" + $newJson = $newJson.TrimEnd() + "`n" + Write-Utf8NoBom-LF -Path $toolsJsonPath -Content $newJson } else { # In-place substitution to preserve existing formatting (indentation, alignment, comments if any) $updatedRaw = $toolsRaw @@ -286,7 +296,8 @@ if(-not $DryRun){ ) } if($updatedRaw -ne $toolsRaw){ - Set-Content -Path $toolsJsonPath -Value $updatedRaw -Encoding UTF8 + #Set-Content -Path $toolsJsonPath -Value $updatedRaw -Encoding UTF8 + Write-Utf8NoBom-LF -Path $toolsJsonPath -Content $updatedRaw } } } @@ -331,7 +342,8 @@ $propsUpdated = [System.Text.RegularExpressions.Regex]::Replace($propsUpdated, $ if(-not $DryRun){ if($propsUpdated -ne $propsRaw){ - Set-Content -Path $propsPath -Value $propsUpdated -Encoding UTF8 + #Set-Content -Path $propsPath -Value $propsUpdated -Encoding UTF8 + Write-Utf8NoBom-LF -Path $propsPath -Content $propsUpdated } elseif($Detailed){ Write-Info 'No AXSharp.* or Inxton.Operon.* entries needed updating in Directory.Packages.props.' } From fdd9d7c91bf1bc9e6b63ef3536d6443072c011c3 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:57:40 +0100 Subject: [PATCH 22/30] add operon-variables.css to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9fdacde63..ad341cc5c 100644 --- a/.gitignore +++ b/.gitignore @@ -437,3 +437,4 @@ temp/ **/JSONREPOS/ .cursor +operon-variables.css \ No newline at end of file From 2f46aea7e340791cdb4512fe53c88e8d812e84bb Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:06:46 +0100 Subject: [PATCH 23/30] Stop tracking operon-variables.css (ignore local changes) --- .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../wwwroot/css/operon-variables.css | 317 ------------------ .../src/wwwroot/css/operon-variables.css | 317 ------------------ 30 files changed, 9510 deletions(-) delete mode 100644 src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css delete mode 100644 src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css delete mode 100644 src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css delete mode 100644 src/io/app/ix-blazor/wwwroot/css/operon-variables.css delete mode 100644 src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css delete mode 100644 src/styling/src/wwwroot/css/operon-variables.css diff --git a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css b/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/Security/src/AXOpen.Security.Blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css b/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/base/src/AXOpen.VisualComposer/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.abstractions/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.balluff.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.cognex.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.desoutter.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.dukane.welders/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css b/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.elements/app/ix-blazor/ElementsComponents.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.festo.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.keyence.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.kuka.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.mitsubishi.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css b/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.pneumatics/app/ix-blazor/PneumaticComponents.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.rexroth.drives/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.rexroth.press/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.rexroth.tightening/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.siem.communication/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.siem.identification/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.ur.robotics/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css b/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/components.zebra.vision/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css b/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/core/app/ix-blazor/axopencore.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/data/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css b/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/inspectors/app/ix-blazor/AXOpen.Inspectors.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css b/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/integrations/src/AXOpen.Integrations.Blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css b/src/io/app/ix-blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/io/app/ix-blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css b/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/probers/app/ix-blazor/librarytemplate.blazor/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} diff --git a/src/styling/src/wwwroot/css/operon-variables.css b/src/styling/src/wwwroot/css/operon-variables.css deleted file mode 100644 index 18145dd65..000000000 --- a/src/styling/src/wwwroot/css/operon-variables.css +++ /dev/null @@ -1,317 +0,0 @@ -@layer theme { - :root, :host { - --font-sans: "Familjen Grotesk", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - } -} - -@layer base { - h1 { - @apply text-5xl text-text font-bold text-wrap wrap-break-word; - } - - h2 { - @apply text-4xl text-text font-bold text-wrap wrap-break-word; - } - - h3 { - @apply text-3xl text-text font-bold text-wrap wrap-break-word; - } - - h4 { - @apply text-2xl text-text font-bold text-wrap wrap-break-word; - } - - h5 { - @apply text-xl text-text font-normal text-wrap wrap-break-word; - } - - h6 { - @apply text-lg text-text font-normal text-wrap wrap-break-word; - } - - p { - @apply text-base text-text-light font-normal text-wrap wrap-break-word; - } - - a { - @apply text-base font-normal text-wrap wrap-break-word cursor-pointer underline; - @apply text-link hover:text-link-hover; - } - - hr { - @apply text-text-light opacity-30; - } - - span { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - div { - @apply text-base text-text font-normal text-wrap wrap-break-word; - } - - /* input theme */ - input[type="date"], - input[type="time"], - input[type="datetime-local"] { - color-scheme: light; - } - - [data-theme="dark"] input[type="date"], - [data-theme="dark"] input[type="time"], - [data-theme="dark"] input[type="datetime-local"] { - color-scheme: dark; - } -} - -@theme { - --text-3xl--line-height: calc(2 / 1.5); - --text-4xl--line-height: calc(2 / 1.5); - --text-5xl--line-height: calc(2 / 1.5); - --text-6xl--line-height: calc(2 / 1.5); - --text-7xl--line-height: calc(2 / 1.5); - --text-8xl--line-height: calc(2 / 1.5); - --text-9xl--line-height: calc(2 / 1.5); - /* radius */ - --radius-full: calc(infinity * 1px); /* 0.25rem; */ - --radius-small: 1rem; - --radius-extra-small: var(--radius-md); - --radius-nav: var(--radius-small); - --radius-button: var(--radius-full); - --radius-action-button: var(--radius-small); - --radius-action-button-icon: var(--radius-small); - --radius-input: var(--radius-full); - --radius-textarea: var(--radius-small); - --radius-checkbox: var(--radius-extra-small); - --radius-toggle: var(--radius-full); - --radius-radio: var(--radius-full); - --radius-select: var(--radius-small); - --radius-file: var(--radius-small); - --radius-color: var(--radius-small); - --radius-picker: var(--radius-small); - --radius-card: var(--radius-small); - --radius-simple-border: var(--radius-small); - --radius-alert: var(--radius-small); - --radius-list-group: var(--radius-small); - --radius-tab: var(--radius-small); - --radius-dropdown: var(--radius-small); - --radius-modal: var(--radius-small); - --radius-tooltip: var(--radius-extra-small); - --radius-accordion: var(--radius-small); - --radius-toast: var(--radius-small); - --radius-table: var(--radius-full); - --radius-pagination-number: var(--radius-full); - /* #region Colors */ - --color-black: #0B0C0C; - --color-white: #FFFFFF; - --color-gray-1: #F3F2F1; - --color-gray-2: #DEE0E2; - --color-gray-3: #949494; - --color-background: #FEFEFE; - --color-background-light: #FFFFFF; - --color-background-dark: #F0F8FF; - --color-background-modal: #F5FAFF; - --color-background-modal-light: #FFFFFF; - --color-text: #0B0C0C; - --color-text-light: #626A6E; - --color-border: #BFC1C3; - --color-border-input: #0B0C0C; - /* #endregion */ - /* #region Links */ - --color-link: #0065B3; - --color-link-hover: #003078; - --color-link-visited: #4C2C92; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #0a319e; - --color-primary-light: #E0E8FF; - --color-success: #00703C; - --color-success-light: #D4F7D4; - --color-warning: #EC9811; - --color-warning-light: #FFEAC9; - --color-danger: #D0190F; - --color-danger-light: #FFDCDA; - --color-info: #2B8CC4; - --color-info-light: #D4ECF7; - --color-neutral: #7C7C7C; - --color-neutral-light: #DEE0E2; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #D0190F; - --color-result-passed: #00703C; - --color-result-inprogress: #0065B3; - --color-result-exclude: #7866B9; - --color-result-bypasse: #912B88; - --color-result-inconcllusive: #B58840; - --color-result-running: #00A2A3; - --color-result-noaction: #949494; - /* #end of result colors*/ - /* diagnostic colors */ - --color-diagnostic-debug: #0065B3; - --color-diagnostic-verbose: #769899; - --color-diagnostic-information: #2B8CC4; - --color-diagnostic-warning: #EC9811; - --color-diagnostic-error: #D0190F; - --color-diagnostic-fatal: #9E1912; - /* end of diagnostic colors */ - /* station status colors */ - --color-automat: #00703C; - --color-ground: #2B8CC4; - --color-grounded: #0065B3; - --color-idle: #949494; - --color-manual: #EC9811; - /* end of station status colors */ - /* prodinsight colors */ - --color-oee: #0A319E; - --color-availability: #00703C; - --color-performance: #0065B3; - --color-quality: #EC9811; - /* end of prodinsight colors */ - /* downtime colors */ - --color-downtime-working: #B6D069; - --color-downtime-planned: #7DCDD2; - --color-downtime-unassigned: #C7C7C7; - --color-downtime-technical: #9885A9; - --color-downtime-operator: #F08584; - --color-downtime-material: #EC9811; - --color-downtime-external: #9E1912; - /* end of downtime colors */ - /* buttons colors */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-neutral: var(--color-neutral); - --color-btn-neutral-hover: var(--color-neutral-light); - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* end of buttons colors */ - - @keyframes ripple { - 0% { - transform: scale(1); - opacity: 1; - } - - 100% { - transform: scale(1.05); - opacity: 0; - } - } - - @keyframes wiggle { - 0%, 100% { - transform: rotate(-3deg); - } - - 50% { - transform: rotate(3deg); - } - } -} - -[data-theme="dark"] { - /* #region Base colors */ - --color-black: #FFFFFF; - --color-white: #121212; - --color-gray-1: #1F1F1F; - --color-gray-2: #949494; - --color-gray-3: #F3F2F1; - --color-background: #121212; - --color-background-light: #1F1F1F; - --color-background-dark: #1F1F1F; - --color-background-modal: #1E1E1E; - --color-background-modal-light: #252525; - --color-text: #F2F2F2; - --color-text-light: #A3A3A3; - --color-border: #4B5563; - --color-border-input: #F2F2F2; - /* #endregion */ - /* #region Links */ - --color-link: #60A5FA; - --color-link-hover: #93C5FD; - --color-link-visited: #C4B5FD; - /* #endregion */ - /* #region Brand & semantic colors */ - --color-primary: #89C4FF; - --color-primary-light: #1e3a8a; - --color-success: #4ADE80; - --color-success-light: #14532d; - --color-warning: #FBBF24; - --color-warning-light: #78350f; - --color-danger: #F87171; - --color-danger-light: #7f1d1d; - --color-info: #38BDF8; - --color-info-light: #0c4a6e; - --color-noactive: #A1A1AA; - --color-noactive-light: #27272a; - /* #endregion */ - /* #region Result colors */ - --color-result-failed: #F87171; - --color-result-passed: #4ADE80; - --color-result-inprogress: #60A5FA; - --color-result-exclude: #A78BFA; - --color-result-bypasse: #E879F9; - --color-result-inconcllusive: #FCD34D; - --color-result-runnig: #2DD4BF; - --color-result-noaction: #A1A1AA; - /* #endregion */ - /* #region Diagnostic colors */ - --color-diagnostic-debug: #60A5FA; - --color-diagnostic-verbose: #5EEAD4; - --color-diagnostic-information: #38BDF8; - --color-diagnostic-warning: #FBBF24; - --color-diagnostic-error: #F87171; - --color-diagnostic-fatal: #EF4444; - /* #endregion */ - /* #region Station status colors */ - --color-automat: #4ADE80; - --color-ground: #38BDF8; - --color-grounded: #60A5FA; - --color-idle: #A1A1AA; - --color-manual: #FBBF24; - /* #endregion */ - /* #region ProdInsight colors */ - --color-oee: #89C4FF; - --color-availability: #B6D069; - --color-performance: #A08AE1; - --color-quality: #FBBF24; - /* #endregion */ - /* #region Downtime colors */ - --color-downtime-unassigned: #C7C7C7; - --color-downtime-material: #FBBF24; - --color-downtime-operator: #F08584; - --color-downtime-working: #B6D069; - --color-downtime-technical: #A08AE1; - --color-downtime-planned: #7DCDD2; - /* #endregion */ - /* #region Buttons */ - --color-btn-primary: var(--color-primary); - --color-btn-primary-hover: var(--color-primary-light); - --color-btn-danger: var(--color-danger); - --color-btn-danger-hover: var(--color-danger-light); - --color-btn-success: var(--color-success); - --color-btn-success-hover: var(--color-success-light); - --color-btn-warning: var(--color-warning); - --color-btn-warning-hover: var(--color-warning-light); - --color-btn-info: var(--color-info); - --color-btn-info-hover: var(--color-info-light); - --color-btn-noactive: var(--color-noactive); - --color-btn-noactive-hover: var(--color-noactive-light); - --color-btn-noactive-hover: #2A2A2A; - --color-btn-outline-bg: transparent; - --color-btn-no-bg-bg: transparent; - /* #endregion */ -} - -:root { - /* btn */ - --btn-hover-translate: -0.1rem; - -} From a2cd855e2d55004089638b5ad8f1ccee96f17e42 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:02:23 +0100 Subject: [PATCH 24/30] normalize line endings in script files using dos2unix --- src/scripts/copy_hardware_ids.sh | 4 ++-- src/scripts/copy_io_addresses.sh | 5 +++-- src/scripts/hw_compile.sh | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/scripts/copy_hardware_ids.sh b/src/scripts/copy_hardware_ids.sh index f36f5b3f0..faa416c6d 100644 --- a/src/scripts/copy_hardware_ids.sh +++ b/src/scripts/copy_hardware_ids.sh @@ -29,7 +29,7 @@ if ! [[ -d "./hwc" ]]; then printf "${RED}Directory \"./hwc\" does not exist!!!${NC}" exit 1 fi - +dos2unix SystemConstants/* input_file="SystemConstants/${PLC_NAME}_HwIdentifiers.st" output_dir="src/IO" output_file1="${output_dir}/HwIdentifiers.st" @@ -125,7 +125,7 @@ END { } ' "$input_file" - +dos2unix -r src/IO/* echo -e "${GREEN}Generation complete.${NC}" echo -e "${GREEN} - ${output_file1}${NC}" echo -e "${GREEN} - ${output_file2}${NC}" diff --git a/src/scripts/copy_io_addresses.sh b/src/scripts/copy_io_addresses.sh index 0145ec32e..911ec2068 100644 --- a/src/scripts/copy_io_addresses.sh +++ b/src/scripts/copy_io_addresses.sh @@ -29,7 +29,7 @@ if ! [[ -d "./hwc" ]]; then printf "${RED}Directory \"./hwc\" does not exist!!!${NC}" exit 1 fi - +dos2unix SystemConstants/* # ---- Paths ---- input_file="SystemConstants/${PLC_NAME}_IoAddresses.st" output_dir="src/IO" @@ -130,4 +130,5 @@ else -NAMESPACE "$NAMESPACE" exitCode=$? echo "exitCode: $exitCode" -fi \ No newline at end of file +fi +dos2unix -r src/IO/* diff --git a/src/scripts/hw_compile.sh b/src/scripts/hw_compile.sh index c02f3645d..4dd42127f 100644 --- a/src/scripts/hw_compile.sh +++ b/src/scripts/hw_compile.sh @@ -3,6 +3,8 @@ export RED='\033[0;31m' export YELLOW='\033[0;33m' export NC='\033[0m\r\n' # No Color+CRLF hwcc=$(apax hwc compile -i ".\hwc" -o bin/hwc/) +dos2unix SystemConstants/* +dos2unix -r src/IO/* if [[ $? -eq 0 ]]; then printf "${GREEN}Hardware configuration compiled succesfully.${NC}" exit 0 From 0ff8c96db9252735d01f2f497032ba9344bb20fb Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:04:11 +0100 Subject: [PATCH 25/30] normalize line endings in Inputs.st, IoStructures.st, and Outputs.st --- src/components.abb.robotics/app/src/IO/Inputs.st | 2 +- src/components.abb.robotics/app/src/IO/IoStructures.st | 2 +- src/components.abb.robotics/app/src/IO/Outputs.st | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components.abb.robotics/app/src/IO/Inputs.st b/src/components.abb.robotics/app/src/IO/Inputs.st index de9a76497..6c7a0d1e9 100644 --- a/src/components.abb.robotics/app/src/IO/Inputs.st +++ b/src/components.abb.robotics/app/src/IO/Inputs.st @@ -1,4 +1,4 @@ -NAMESPACE AXOpen.Components.Abb.Robotics +NAMESPACE AXOpen.Components.Abb.Robotics TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} diff --git a/src/components.abb.robotics/app/src/IO/IoStructures.st b/src/components.abb.robotics/app/src/IO/IoStructures.st index 581d827f5..e1e22608e 100644 --- a/src/components.abb.robotics/app/src/IO/IoStructures.st +++ b/src/components.abb.robotics/app/src/IO/IoStructures.st @@ -1,4 +1,4 @@ -NAMESPACE AXOpen.Components.Abb.Robotics +NAMESPACE AXOpen.Components.Abb.Robotics TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} diff --git a/src/components.abb.robotics/app/src/IO/Outputs.st b/src/components.abb.robotics/app/src/IO/Outputs.st index 3f13a292f..85dc9c4a1 100644 --- a/src/components.abb.robotics/app/src/IO/Outputs.st +++ b/src/components.abb.robotics/app/src/IO/Outputs.st @@ -1,4 +1,4 @@ -NAMESPACE AXOpen.Components.Abb.Robotics +NAMESPACE AXOpen.Components.Abb.Robotics TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} From 9d55c66132b90fa3cd35eaeb0c0e4a063e684374 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:07:53 +0100 Subject: [PATCH 26/30] remove commented-out line for HWC compiled files and add app\gsd\source to .gitignore --- .gitignore | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index ad341cc5c..af19997e9 100644 --- a/.gitignore +++ b/.gitignore @@ -420,9 +420,6 @@ import-cache .ax/plcs .ax/certificates -#AX HWC compiled -hwc.gen/ - #AX HWC templates copied from library library_templates @@ -437,4 +434,6 @@ temp/ **/JSONREPOS/ .cursor -operon-variables.css \ No newline at end of file +operon-variables.css + +app\gsd\source From 58250b118515e2b60701316a17153286eee0d328 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:10:19 +0100 Subject: [PATCH 27/30] gitignore updated --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index af19997e9..cb1b2b1a9 100644 --- a/.gitignore +++ b/.gitignore @@ -436,4 +436,4 @@ temp/ .cursor operon-variables.css -app\gsd\source +**/app/gsd/source/** From e69d312211ff809a2b4e8f1c0df22ba32498e119 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:13:08 +0100 Subject: [PATCH 28/30] normalize line endings for copy_hardware_ids.sh, copy_io_addresses.sh, and hw_compile.sh --- src/scripts/copy_hardware_ids.sh | 1 + src/scripts/copy_io_addresses.sh | 1 + src/scripts/hw_compile.sh | 1 + 3 files changed, 3 insertions(+) diff --git a/src/scripts/copy_hardware_ids.sh b/src/scripts/copy_hardware_ids.sh index faa416c6d..5c5694514 100644 --- a/src/scripts/copy_hardware_ids.sh +++ b/src/scripts/copy_hardware_ids.sh @@ -30,6 +30,7 @@ if ! [[ -d "./hwc" ]]; then exit 1 fi dos2unix SystemConstants/* +dos2unix -r hwc/hwc.gen/ input_file="SystemConstants/${PLC_NAME}_HwIdentifiers.st" output_dir="src/IO" output_file1="${output_dir}/HwIdentifiers.st" diff --git a/src/scripts/copy_io_addresses.sh b/src/scripts/copy_io_addresses.sh index 911ec2068..4f6884c36 100644 --- a/src/scripts/copy_io_addresses.sh +++ b/src/scripts/copy_io_addresses.sh @@ -30,6 +30,7 @@ if ! [[ -d "./hwc" ]]; then exit 1 fi dos2unix SystemConstants/* +dos2unix -r hwc/hwc.gen/ # ---- Paths ---- input_file="SystemConstants/${PLC_NAME}_IoAddresses.st" output_dir="src/IO" diff --git a/src/scripts/hw_compile.sh b/src/scripts/hw_compile.sh index 4dd42127f..53c2e5267 100644 --- a/src/scripts/hw_compile.sh +++ b/src/scripts/hw_compile.sh @@ -5,6 +5,7 @@ export NC='\033[0m\r\n' # No Color+CRLF hwcc=$(apax hwc compile -i ".\hwc" -o bin/hwc/) dos2unix SystemConstants/* dos2unix -r src/IO/* +dos2unix -r hwc/hwc.gen/ if [[ $? -eq 0 ]]; then printf "${GREEN}Hardware configuration compiled succesfully.${NC}" exit 0 From 7e1e89b63bf21dcb8f2729c31470e10e94f7a78f Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:14:29 +0100 Subject: [PATCH 29/30] Add SecurityConfiguration.json for PLC line with PKI and access protection data - Introduced a new JSON configuration file for security settings. - Included PKIData, UserData, CertificateAssignments, and AccessProtectionData. - Defined TLS and WebServer certificate assignments. --- .../hwc.gen/plc_line.HardwareIdentifiers.json | 125 + .../app/hwc/hwc.gen/plc_line.IoAddresses.json | 12361 ++++++++++++++++ .../plc_line.SecurityConfiguration.json | 9 + 3 files changed, 12495 insertions(+) create mode 100644 src/components.abb.robotics/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json create mode 100644 src/components.abb.robotics/app/hwc/hwc.gen/plc_line.IoAddresses.json create mode 100644 src/components.abb.robotics/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json diff --git a/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json new file mode 100644 index 000000000..03fa94def --- /dev/null +++ b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json @@ -0,0 +1,125 @@ +{ + "Version": 1, + "HardwareIdentifiers": [ + { + "Name": "abb_irc5_robot", + "Value": 266 + }, + { + "Name": "abb_irc5_robot~DI_64_bytes~DI 64 bytes", + "Value": 271 + }, + { + "Name": "abb_irc5_robot~DO_64_bytes~DO 64 bytes", + "Value": 270 + }, + { + "Name": "abb_irc5_robot~Rack", + "Value": 268 + }, + { + "Name": "abb_irc5_robot~abb_irc5_robot", + "Value": 269 + }, + { + "Name": "abb_irc5_robot~abb_irc5_robot~PROFINET_Interface", + "Value": 265 + }, + { + "Name": "abb_irc5_robot~abb_irc5_robot~PROFINET_Interface~Port_1", + "Value": 267 + }, + { + "Name": "abb_irc5_robot~abb_irc5_robot~Robot Basic Device", + "Value": 272 + }, + { + "Name": "abb_omnicore_robot", + "Value": 258 + }, + { + "Name": "abb_omnicore_robot~DI_64_bytes~DI 64 bytes", + "Value": 263 + }, + { + "Name": "abb_omnicore_robot~DO_64_bytes~DO 64 bytes", + "Value": 262 + }, + { + "Name": "abb_omnicore_robot~Rack", + "Value": 260 + }, + { + "Name": "abb_omnicore_robot~abb_omnicore_robot", + "Value": 261 + }, + { + "Name": "abb_omnicore_robot~abb_omnicore_robot~OmniCore Standard PROFINET Device", + "Value": 264 + }, + { + "Name": "abb_omnicore_robot~abb_omnicore_robot~PROFINET_Interface", + "Value": 257 + }, + { + "Name": "abb_omnicore_robot~abb_omnicore_robot~PROFINET_Interface~Port_1", + "Value": 259 + }, + { + "Name": "plc_line", + "Value": 32 + }, + { + "Name": "plc_line~Rail_0", + "Value": 273 + }, + { + "Name": "plc_line~plc_line", + "Value": 48 + }, + { + "Name": "plc_line~plc_line~CPU display_1", + "Value": 54 + }, + { + "Name": "plc_line~plc_line~Card reader/writer_1", + "Value": 51 + }, + { + "Name": "plc_line~plc_line~DP interface_1", + "Value": 60 + }, + { + "Name": "plc_line~plc_line~OPC UA_1", + "Value": 117 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1", + "Value": 64 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1~Port_1", + "Value": 65 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1~Port_2", + "Value": 66 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_2", + "Value": 72 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_2~Port_3", + "Value": 73 + }, + { + "Name": "plc_line~plc_line~Virtual communication interface", + "Value": 135 + }, + { + "Name": "profinet_plc_line", + "Value": 256 + } + ] +} \ No newline at end of file diff --git a/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.IoAddresses.json b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.IoAddresses.json new file mode 100644 index 000000000..dc4eb4e6d --- /dev/null +++ b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.IoAddresses.json @@ -0,0 +1,12361 @@ +{ + "Version": 2, + "IoAddresses": [ + { + "Ref": "abb_irc5_robot/DI_64_bytes", + "Submodules": [ + { + "Name": "DI 64 bytes", + "HardwareIdentifier": 271, + "Inputs": { + "StartAddress": "64.0", + "EndAddress": "127.7", + "Length": 512, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_0", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_1", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_2", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_3", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_4", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_5", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_6", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_7", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_0", + "Offset": 16, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_1", + "Offset": 17, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_2", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_3", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_4", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_5", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_6", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_7", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_0", + "Offset": 24, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_1", + "Offset": 25, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_2", + "Offset": 26, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_3", + "Offset": 27, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_4", + "Offset": 28, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_5", + "Offset": 29, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_6", + "Offset": 30, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_7", + "Offset": 31, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_0", + "Offset": 32, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_1", + "Offset": 33, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_2", + "Offset": 34, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_3", + "Offset": 35, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_4", + "Offset": 36, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_5", + "Offset": 37, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_6", + "Offset": 38, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_7", + "Offset": 39, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_0", + "Offset": 40, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_1", + "Offset": 41, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_2", + "Offset": 42, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_3", + "Offset": 43, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_4", + "Offset": 44, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_5", + "Offset": 45, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_6", + "Offset": 46, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_7", + "Offset": 47, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_0", + "Offset": 48, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_1", + "Offset": 49, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_2", + "Offset": 50, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_3", + "Offset": 51, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_4", + "Offset": 52, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_5", + "Offset": 53, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_6", + "Offset": 54, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_7", + "Offset": 55, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_0", + "Offset": 56, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_1", + "Offset": 57, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_2", + "Offset": 58, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_3", + "Offset": 59, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_4", + "Offset": 60, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_5", + "Offset": 61, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_6", + "Offset": 62, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_7", + "Offset": 63, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_0", + "Offset": 64, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_1", + "Offset": 65, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_2", + "Offset": 66, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_3", + "Offset": 67, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_4", + "Offset": 68, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_5", + "Offset": 69, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_6", + "Offset": 70, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_7", + "Offset": 71, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_0", + "Offset": 72, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_1", + "Offset": 73, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_2", + "Offset": 74, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_3", + "Offset": 75, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_4", + "Offset": 76, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_5", + "Offset": 77, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_6", + "Offset": 78, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_7", + "Offset": 79, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_0", + "Offset": 80, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_1", + "Offset": 81, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_2", + "Offset": 82, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_3", + "Offset": 83, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_4", + "Offset": 84, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_5", + "Offset": 85, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_6", + "Offset": 86, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_7", + "Offset": 87, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_0", + "Offset": 88, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_1", + "Offset": 89, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_2", + "Offset": 90, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_3", + "Offset": 91, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_4", + "Offset": 92, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_5", + "Offset": 93, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_6", + "Offset": 94, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_7", + "Offset": 95, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_0", + "Offset": 96, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_1", + "Offset": 97, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_2", + "Offset": 98, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_3", + "Offset": 99, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_4", + "Offset": 100, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_5", + "Offset": 101, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_6", + "Offset": 102, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_7", + "Offset": 103, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_0", + "Offset": 104, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_1", + "Offset": 105, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_2", + "Offset": 106, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_3", + "Offset": 107, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_4", + "Offset": 108, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_5", + "Offset": 109, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_6", + "Offset": 110, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_7", + "Offset": 111, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_0", + "Offset": 112, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_1", + "Offset": 113, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_2", + "Offset": 114, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_3", + "Offset": 115, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_4", + "Offset": 116, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_5", + "Offset": 117, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_6", + "Offset": 118, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_7", + "Offset": 119, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_0", + "Offset": 120, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_1", + "Offset": 121, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_2", + "Offset": 122, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_3", + "Offset": 123, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_4", + "Offset": 124, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_5", + "Offset": 125, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_6", + "Offset": 126, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_7", + "Offset": 127, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_0", + "Offset": 128, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_1", + "Offset": 129, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_2", + "Offset": 130, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_3", + "Offset": 131, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_4", + "Offset": 132, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_5", + "Offset": 133, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_6", + "Offset": 134, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_7", + "Offset": 135, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_0", + "Offset": 136, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_1", + "Offset": 137, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_2", + "Offset": 138, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_3", + "Offset": 139, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_4", + "Offset": 140, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_5", + "Offset": 141, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_6", + "Offset": 142, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_7", + "Offset": 143, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_0", + "Offset": 144, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_1", + "Offset": 145, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_2", + "Offset": 146, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_3", + "Offset": 147, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_4", + "Offset": 148, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_5", + "Offset": 149, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_6", + "Offset": 150, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_7", + "Offset": 151, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_0", + "Offset": 152, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_1", + "Offset": 153, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_2", + "Offset": 154, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_3", + "Offset": 155, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_4", + "Offset": 156, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_5", + "Offset": 157, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_6", + "Offset": 158, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_7", + "Offset": 159, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_0", + "Offset": 160, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_1", + "Offset": 161, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_2", + "Offset": 162, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_3", + "Offset": 163, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_4", + "Offset": 164, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_5", + "Offset": 165, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_6", + "Offset": 166, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_7", + "Offset": 167, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_0", + "Offset": 168, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_1", + "Offset": 169, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_2", + "Offset": 170, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_3", + "Offset": 171, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_4", + "Offset": 172, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_5", + "Offset": 173, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_6", + "Offset": 174, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_7", + "Offset": 175, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_0", + "Offset": 176, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_1", + "Offset": 177, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_2", + "Offset": 178, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_3", + "Offset": 179, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_4", + "Offset": 180, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_5", + "Offset": 181, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_6", + "Offset": 182, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_7", + "Offset": 183, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_0", + "Offset": 184, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_1", + "Offset": 185, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_2", + "Offset": 186, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_3", + "Offset": 187, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_4", + "Offset": 188, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_5", + "Offset": 189, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_6", + "Offset": 190, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_7", + "Offset": 191, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_0", + "Offset": 192, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_1", + "Offset": 193, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_2", + "Offset": 194, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_3", + "Offset": 195, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_4", + "Offset": 196, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_5", + "Offset": 197, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_6", + "Offset": 198, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_7", + "Offset": 199, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_0", + "Offset": 200, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_1", + "Offset": 201, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_2", + "Offset": 202, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_3", + "Offset": 203, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_4", + "Offset": 204, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_5", + "Offset": 205, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_6", + "Offset": 206, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_7", + "Offset": 207, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_0", + "Offset": 208, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_1", + "Offset": 209, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_2", + "Offset": 210, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_3", + "Offset": 211, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_4", + "Offset": 212, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_5", + "Offset": 213, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_6", + "Offset": 214, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_7", + "Offset": 215, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_0", + "Offset": 216, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_1", + "Offset": 217, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_2", + "Offset": 218, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_3", + "Offset": 219, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_4", + "Offset": 220, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_5", + "Offset": 221, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_6", + "Offset": 222, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_7", + "Offset": 223, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_0", + "Offset": 224, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_1", + "Offset": 225, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_2", + "Offset": 226, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_3", + "Offset": 227, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_4", + "Offset": 228, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_5", + "Offset": 229, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_6", + "Offset": 230, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_7", + "Offset": 231, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_0", + "Offset": 232, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_1", + "Offset": 233, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_2", + "Offset": 234, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_3", + "Offset": 235, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_4", + "Offset": 236, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_5", + "Offset": 237, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_6", + "Offset": 238, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_7", + "Offset": 239, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_0", + "Offset": 240, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_1", + "Offset": 241, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_2", + "Offset": 242, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_3", + "Offset": 243, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_4", + "Offset": 244, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_5", + "Offset": 245, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_6", + "Offset": 246, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_7", + "Offset": 247, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_0", + "Offset": 248, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_1", + "Offset": 249, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_2", + "Offset": 250, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_3", + "Offset": 251, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_4", + "Offset": 252, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_5", + "Offset": 253, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_6", + "Offset": 254, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_7", + "Offset": 255, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_0", + "Offset": 256, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_1", + "Offset": 257, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_2", + "Offset": 258, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_3", + "Offset": 259, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_4", + "Offset": 260, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_5", + "Offset": 261, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_6", + "Offset": 262, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_7", + "Offset": 263, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_0", + "Offset": 264, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_1", + "Offset": 265, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_2", + "Offset": 266, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_3", + "Offset": 267, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_4", + "Offset": 268, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_5", + "Offset": 269, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_6", + "Offset": 270, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_7", + "Offset": 271, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_0", + "Offset": 272, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_1", + "Offset": 273, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_2", + "Offset": 274, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_3", + "Offset": 275, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_4", + "Offset": 276, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_5", + "Offset": 277, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_6", + "Offset": 278, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_7", + "Offset": 279, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_0", + "Offset": 280, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_1", + "Offset": 281, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_2", + "Offset": 282, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_3", + "Offset": 283, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_4", + "Offset": 284, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_5", + "Offset": 285, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_6", + "Offset": 286, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_7", + "Offset": 287, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_0", + "Offset": 288, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_1", + "Offset": 289, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_2", + "Offset": 290, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_3", + "Offset": 291, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_4", + "Offset": 292, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_5", + "Offset": 293, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_6", + "Offset": 294, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_7", + "Offset": 295, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_0", + "Offset": 296, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_1", + "Offset": 297, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_2", + "Offset": 298, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_3", + "Offset": 299, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_4", + "Offset": 300, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_5", + "Offset": 301, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_6", + "Offset": 302, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_7", + "Offset": 303, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_0", + "Offset": 304, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_1", + "Offset": 305, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_2", + "Offset": 306, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_3", + "Offset": 307, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_4", + "Offset": 308, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_5", + "Offset": 309, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_6", + "Offset": 310, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_7", + "Offset": 311, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_0", + "Offset": 312, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_1", + "Offset": 313, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_2", + "Offset": 314, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_3", + "Offset": 315, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_4", + "Offset": 316, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_5", + "Offset": 317, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_6", + "Offset": 318, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_7", + "Offset": 319, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_0", + "Offset": 320, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_1", + "Offset": 321, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_2", + "Offset": 322, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_3", + "Offset": 323, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_4", + "Offset": 324, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_5", + "Offset": 325, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_6", + "Offset": 326, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_7", + "Offset": 327, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_0", + "Offset": 328, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_1", + "Offset": 329, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_2", + "Offset": 330, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_3", + "Offset": 331, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_4", + "Offset": 332, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_5", + "Offset": 333, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_6", + "Offset": 334, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_7", + "Offset": 335, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_0", + "Offset": 336, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_1", + "Offset": 337, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_2", + "Offset": 338, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_3", + "Offset": 339, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_4", + "Offset": 340, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_5", + "Offset": 341, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_6", + "Offset": 342, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_7", + "Offset": 343, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_0", + "Offset": 344, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_1", + "Offset": 345, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_2", + "Offset": 346, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_3", + "Offset": 347, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_4", + "Offset": 348, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_5", + "Offset": 349, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_6", + "Offset": 350, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_7", + "Offset": 351, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_0", + "Offset": 352, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_1", + "Offset": 353, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_2", + "Offset": 354, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_3", + "Offset": 355, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_4", + "Offset": 356, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_5", + "Offset": 357, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_6", + "Offset": 358, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_7", + "Offset": 359, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_0", + "Offset": 360, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_1", + "Offset": 361, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_2", + "Offset": 362, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_3", + "Offset": 363, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_4", + "Offset": 364, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_5", + "Offset": 365, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_6", + "Offset": 366, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_7", + "Offset": 367, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_0", + "Offset": 368, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_1", + "Offset": 369, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_2", + "Offset": 370, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_3", + "Offset": 371, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_4", + "Offset": 372, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_5", + "Offset": 373, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_6", + "Offset": 374, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_7", + "Offset": 375, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_0", + "Offset": 376, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_1", + "Offset": 377, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_2", + "Offset": 378, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_3", + "Offset": 379, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_4", + "Offset": 380, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_5", + "Offset": 381, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_6", + "Offset": 382, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_7", + "Offset": 383, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_0", + "Offset": 384, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_1", + "Offset": 385, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_2", + "Offset": 386, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_3", + "Offset": 387, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_4", + "Offset": 388, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_5", + "Offset": 389, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_6", + "Offset": 390, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_7", + "Offset": 391, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_0", + "Offset": 392, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_1", + "Offset": 393, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_2", + "Offset": 394, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_3", + "Offset": 395, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_4", + "Offset": 396, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_5", + "Offset": 397, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_6", + "Offset": 398, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_7", + "Offset": 399, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_0", + "Offset": 400, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_1", + "Offset": 401, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_2", + "Offset": 402, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_3", + "Offset": 403, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_4", + "Offset": 404, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_5", + "Offset": 405, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_6", + "Offset": 406, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_7", + "Offset": 407, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_0", + "Offset": 408, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_1", + "Offset": 409, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_2", + "Offset": 410, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_3", + "Offset": 411, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_4", + "Offset": 412, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_5", + "Offset": 413, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_6", + "Offset": 414, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_7", + "Offset": 415, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_0", + "Offset": 416, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_1", + "Offset": 417, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_2", + "Offset": 418, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_3", + "Offset": 419, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_4", + "Offset": 420, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_5", + "Offset": 421, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_6", + "Offset": 422, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_7", + "Offset": 423, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_0", + "Offset": 424, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_1", + "Offset": 425, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_2", + "Offset": 426, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_3", + "Offset": 427, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_4", + "Offset": 428, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_5", + "Offset": 429, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_6", + "Offset": 430, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_7", + "Offset": 431, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_0", + "Offset": 432, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_1", + "Offset": 433, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_2", + "Offset": 434, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_3", + "Offset": 435, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_4", + "Offset": 436, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_5", + "Offset": 437, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_6", + "Offset": 438, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_7", + "Offset": 439, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_0", + "Offset": 440, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_1", + "Offset": 441, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_2", + "Offset": 442, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_3", + "Offset": 443, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_4", + "Offset": 444, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_5", + "Offset": 445, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_6", + "Offset": 446, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_7", + "Offset": 447, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_0", + "Offset": 448, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_1", + "Offset": 449, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_2", + "Offset": 450, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_3", + "Offset": 451, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_4", + "Offset": 452, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_5", + "Offset": 453, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_6", + "Offset": 454, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_7", + "Offset": 455, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_0", + "Offset": 456, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_1", + "Offset": 457, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_2", + "Offset": 458, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_3", + "Offset": 459, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_4", + "Offset": 460, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_5", + "Offset": 461, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_6", + "Offset": 462, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_7", + "Offset": 463, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_0", + "Offset": 464, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_1", + "Offset": 465, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_2", + "Offset": 466, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_3", + "Offset": 467, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_4", + "Offset": 468, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_5", + "Offset": 469, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_6", + "Offset": 470, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_7", + "Offset": 471, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_0", + "Offset": 472, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_1", + "Offset": 473, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_2", + "Offset": 474, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_3", + "Offset": 475, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_4", + "Offset": 476, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_5", + "Offset": 477, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_6", + "Offset": 478, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_7", + "Offset": 479, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_0", + "Offset": 480, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_1", + "Offset": 481, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_2", + "Offset": 482, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_3", + "Offset": 483, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_4", + "Offset": 484, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_5", + "Offset": 485, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_6", + "Offset": 486, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_7", + "Offset": 487, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_0", + "Offset": 488, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_1", + "Offset": 489, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_2", + "Offset": 490, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_3", + "Offset": 491, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_4", + "Offset": 492, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_5", + "Offset": 493, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_6", + "Offset": 494, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_7", + "Offset": 495, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_0", + "Offset": 496, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_1", + "Offset": 497, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_2", + "Offset": 498, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_3", + "Offset": 499, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_4", + "Offset": 500, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_5", + "Offset": 501, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_6", + "Offset": 502, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_7", + "Offset": 503, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_0", + "Offset": 504, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_1", + "Offset": 505, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_2", + "Offset": 506, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_3", + "Offset": 507, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_4", + "Offset": 508, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_5", + "Offset": 509, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_6", + "Offset": 510, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_7", + "Offset": 511, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "abb_irc5_robot/DO_64_bytes", + "Submodules": [ + { + "Name": "DO 64 bytes", + "HardwareIdentifier": 270, + "Outputs": { + "StartAddress": "64.0", + "EndAddress": "127.7", + "Length": 512, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_0", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_1", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_2", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_3", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_4", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_5", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_6", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_7", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_0", + "Offset": 16, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_1", + "Offset": 17, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_2", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_3", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_4", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_5", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_6", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_7", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_0", + "Offset": 24, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_1", + "Offset": 25, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_2", + "Offset": 26, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_3", + "Offset": 27, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_4", + "Offset": 28, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_5", + "Offset": 29, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_6", + "Offset": 30, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_7", + "Offset": 31, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_0", + "Offset": 32, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_1", + "Offset": 33, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_2", + "Offset": 34, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_3", + "Offset": 35, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_4", + "Offset": 36, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_5", + "Offset": 37, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_6", + "Offset": 38, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_7", + "Offset": 39, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_0", + "Offset": 40, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_1", + "Offset": 41, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_2", + "Offset": 42, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_3", + "Offset": 43, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_4", + "Offset": 44, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_5", + "Offset": 45, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_6", + "Offset": 46, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_7", + "Offset": 47, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_0", + "Offset": 48, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_1", + "Offset": 49, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_2", + "Offset": 50, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_3", + "Offset": 51, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_4", + "Offset": 52, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_5", + "Offset": 53, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_6", + "Offset": 54, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_7", + "Offset": 55, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_0", + "Offset": 56, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_1", + "Offset": 57, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_2", + "Offset": 58, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_3", + "Offset": 59, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_4", + "Offset": 60, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_5", + "Offset": 61, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_6", + "Offset": 62, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_7", + "Offset": 63, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_0", + "Offset": 64, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_1", + "Offset": 65, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_2", + "Offset": 66, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_3", + "Offset": 67, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_4", + "Offset": 68, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_5", + "Offset": 69, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_6", + "Offset": 70, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_7", + "Offset": 71, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_0", + "Offset": 72, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_1", + "Offset": 73, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_2", + "Offset": 74, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_3", + "Offset": 75, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_4", + "Offset": 76, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_5", + "Offset": 77, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_6", + "Offset": 78, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_7", + "Offset": 79, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_0", + "Offset": 80, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_1", + "Offset": 81, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_2", + "Offset": 82, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_3", + "Offset": 83, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_4", + "Offset": 84, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_5", + "Offset": 85, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_6", + "Offset": 86, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_7", + "Offset": 87, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_0", + "Offset": 88, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_1", + "Offset": 89, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_2", + "Offset": 90, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_3", + "Offset": 91, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_4", + "Offset": 92, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_5", + "Offset": 93, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_6", + "Offset": 94, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_7", + "Offset": 95, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_0", + "Offset": 96, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_1", + "Offset": 97, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_2", + "Offset": 98, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_3", + "Offset": 99, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_4", + "Offset": 100, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_5", + "Offset": 101, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_6", + "Offset": 102, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_7", + "Offset": 103, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_0", + "Offset": 104, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_1", + "Offset": 105, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_2", + "Offset": 106, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_3", + "Offset": 107, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_4", + "Offset": 108, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_5", + "Offset": 109, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_6", + "Offset": 110, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_7", + "Offset": 111, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_0", + "Offset": 112, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_1", + "Offset": 113, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_2", + "Offset": 114, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_3", + "Offset": 115, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_4", + "Offset": 116, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_5", + "Offset": 117, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_6", + "Offset": 118, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_7", + "Offset": 119, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_0", + "Offset": 120, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_1", + "Offset": 121, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_2", + "Offset": 122, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_3", + "Offset": 123, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_4", + "Offset": 124, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_5", + "Offset": 125, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_6", + "Offset": 126, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_7", + "Offset": 127, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_0", + "Offset": 128, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_1", + "Offset": 129, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_2", + "Offset": 130, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_3", + "Offset": 131, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_4", + "Offset": 132, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_5", + "Offset": 133, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_6", + "Offset": 134, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_7", + "Offset": 135, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_0", + "Offset": 136, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_1", + "Offset": 137, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_2", + "Offset": 138, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_3", + "Offset": 139, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_4", + "Offset": 140, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_5", + "Offset": 141, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_6", + "Offset": 142, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_7", + "Offset": 143, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_0", + "Offset": 144, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_1", + "Offset": 145, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_2", + "Offset": 146, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_3", + "Offset": 147, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_4", + "Offset": 148, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_5", + "Offset": 149, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_6", + "Offset": 150, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_7", + "Offset": 151, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_0", + "Offset": 152, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_1", + "Offset": 153, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_2", + "Offset": 154, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_3", + "Offset": 155, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_4", + "Offset": 156, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_5", + "Offset": 157, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_6", + "Offset": 158, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_7", + "Offset": 159, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_0", + "Offset": 160, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_1", + "Offset": 161, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_2", + "Offset": 162, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_3", + "Offset": 163, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_4", + "Offset": 164, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_5", + "Offset": 165, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_6", + "Offset": 166, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_7", + "Offset": 167, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_0", + "Offset": 168, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_1", + "Offset": 169, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_2", + "Offset": 170, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_3", + "Offset": 171, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_4", + "Offset": 172, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_5", + "Offset": 173, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_6", + "Offset": 174, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_7", + "Offset": 175, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_0", + "Offset": 176, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_1", + "Offset": 177, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_2", + "Offset": 178, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_3", + "Offset": 179, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_4", + "Offset": 180, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_5", + "Offset": 181, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_6", + "Offset": 182, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_7", + "Offset": 183, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_0", + "Offset": 184, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_1", + "Offset": 185, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_2", + "Offset": 186, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_3", + "Offset": 187, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_4", + "Offset": 188, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_5", + "Offset": 189, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_6", + "Offset": 190, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_7", + "Offset": 191, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_0", + "Offset": 192, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_1", + "Offset": 193, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_2", + "Offset": 194, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_3", + "Offset": 195, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_4", + "Offset": 196, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_5", + "Offset": 197, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_6", + "Offset": 198, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_7", + "Offset": 199, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_0", + "Offset": 200, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_1", + "Offset": 201, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_2", + "Offset": 202, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_3", + "Offset": 203, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_4", + "Offset": 204, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_5", + "Offset": 205, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_6", + "Offset": 206, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_7", + "Offset": 207, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_0", + "Offset": 208, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_1", + "Offset": 209, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_2", + "Offset": 210, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_3", + "Offset": 211, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_4", + "Offset": 212, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_5", + "Offset": 213, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_6", + "Offset": 214, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_7", + "Offset": 215, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_0", + "Offset": 216, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_1", + "Offset": 217, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_2", + "Offset": 218, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_3", + "Offset": 219, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_4", + "Offset": 220, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_5", + "Offset": 221, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_6", + "Offset": 222, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_7", + "Offset": 223, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_0", + "Offset": 224, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_1", + "Offset": 225, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_2", + "Offset": 226, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_3", + "Offset": 227, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_4", + "Offset": 228, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_5", + "Offset": 229, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_6", + "Offset": 230, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_7", + "Offset": 231, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_0", + "Offset": 232, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_1", + "Offset": 233, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_2", + "Offset": 234, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_3", + "Offset": 235, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_4", + "Offset": 236, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_5", + "Offset": 237, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_6", + "Offset": 238, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_7", + "Offset": 239, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_0", + "Offset": 240, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_1", + "Offset": 241, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_2", + "Offset": 242, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_3", + "Offset": 243, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_4", + "Offset": 244, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_5", + "Offset": 245, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_6", + "Offset": 246, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_7", + "Offset": 247, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_0", + "Offset": 248, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_1", + "Offset": 249, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_2", + "Offset": 250, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_3", + "Offset": 251, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_4", + "Offset": 252, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_5", + "Offset": 253, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_6", + "Offset": 254, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_7", + "Offset": 255, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_0", + "Offset": 256, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_1", + "Offset": 257, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_2", + "Offset": 258, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_3", + "Offset": 259, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_4", + "Offset": 260, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_5", + "Offset": 261, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_6", + "Offset": 262, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_7", + "Offset": 263, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_0", + "Offset": 264, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_1", + "Offset": 265, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_2", + "Offset": 266, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_3", + "Offset": 267, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_4", + "Offset": 268, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_5", + "Offset": 269, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_6", + "Offset": 270, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_7", + "Offset": 271, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_0", + "Offset": 272, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_1", + "Offset": 273, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_2", + "Offset": 274, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_3", + "Offset": 275, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_4", + "Offset": 276, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_5", + "Offset": 277, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_6", + "Offset": 278, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_7", + "Offset": 279, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_0", + "Offset": 280, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_1", + "Offset": 281, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_2", + "Offset": 282, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_3", + "Offset": 283, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_4", + "Offset": 284, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_5", + "Offset": 285, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_6", + "Offset": 286, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_7", + "Offset": 287, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_0", + "Offset": 288, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_1", + "Offset": 289, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_2", + "Offset": 290, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_3", + "Offset": 291, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_4", + "Offset": 292, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_5", + "Offset": 293, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_6", + "Offset": 294, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_7", + "Offset": 295, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_0", + "Offset": 296, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_1", + "Offset": 297, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_2", + "Offset": 298, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_3", + "Offset": 299, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_4", + "Offset": 300, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_5", + "Offset": 301, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_6", + "Offset": 302, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_7", + "Offset": 303, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_0", + "Offset": 304, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_1", + "Offset": 305, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_2", + "Offset": 306, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_3", + "Offset": 307, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_4", + "Offset": 308, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_5", + "Offset": 309, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_6", + "Offset": 310, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_7", + "Offset": 311, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_0", + "Offset": 312, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_1", + "Offset": 313, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_2", + "Offset": 314, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_3", + "Offset": 315, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_4", + "Offset": 316, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_5", + "Offset": 317, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_6", + "Offset": 318, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_7", + "Offset": 319, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_0", + "Offset": 320, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_1", + "Offset": 321, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_2", + "Offset": 322, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_3", + "Offset": 323, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_4", + "Offset": 324, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_5", + "Offset": 325, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_6", + "Offset": 326, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_7", + "Offset": 327, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_0", + "Offset": 328, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_1", + "Offset": 329, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_2", + "Offset": 330, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_3", + "Offset": 331, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_4", + "Offset": 332, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_5", + "Offset": 333, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_6", + "Offset": 334, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_7", + "Offset": 335, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_0", + "Offset": 336, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_1", + "Offset": 337, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_2", + "Offset": 338, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_3", + "Offset": 339, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_4", + "Offset": 340, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_5", + "Offset": 341, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_6", + "Offset": 342, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_7", + "Offset": 343, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_0", + "Offset": 344, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_1", + "Offset": 345, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_2", + "Offset": 346, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_3", + "Offset": 347, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_4", + "Offset": 348, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_5", + "Offset": 349, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_6", + "Offset": 350, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_7", + "Offset": 351, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_0", + "Offset": 352, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_1", + "Offset": 353, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_2", + "Offset": 354, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_3", + "Offset": 355, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_4", + "Offset": 356, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_5", + "Offset": 357, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_6", + "Offset": 358, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_7", + "Offset": 359, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_0", + "Offset": 360, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_1", + "Offset": 361, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_2", + "Offset": 362, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_3", + "Offset": 363, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_4", + "Offset": 364, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_5", + "Offset": 365, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_6", + "Offset": 366, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_7", + "Offset": 367, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_0", + "Offset": 368, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_1", + "Offset": 369, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_2", + "Offset": 370, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_3", + "Offset": 371, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_4", + "Offset": 372, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_5", + "Offset": 373, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_6", + "Offset": 374, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_7", + "Offset": 375, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_0", + "Offset": 376, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_1", + "Offset": 377, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_2", + "Offset": 378, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_3", + "Offset": 379, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_4", + "Offset": 380, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_5", + "Offset": 381, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_6", + "Offset": 382, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_7", + "Offset": 383, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_0", + "Offset": 384, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_1", + "Offset": 385, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_2", + "Offset": 386, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_3", + "Offset": 387, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_4", + "Offset": 388, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_5", + "Offset": 389, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_6", + "Offset": 390, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_7", + "Offset": 391, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_0", + "Offset": 392, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_1", + "Offset": 393, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_2", + "Offset": 394, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_3", + "Offset": 395, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_4", + "Offset": 396, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_5", + "Offset": 397, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_6", + "Offset": 398, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_7", + "Offset": 399, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_0", + "Offset": 400, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_1", + "Offset": 401, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_2", + "Offset": 402, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_3", + "Offset": 403, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_4", + "Offset": 404, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_5", + "Offset": 405, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_6", + "Offset": 406, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_7", + "Offset": 407, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_0", + "Offset": 408, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_1", + "Offset": 409, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_2", + "Offset": 410, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_3", + "Offset": 411, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_4", + "Offset": 412, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_5", + "Offset": 413, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_6", + "Offset": 414, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_7", + "Offset": 415, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_0", + "Offset": 416, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_1", + "Offset": 417, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_2", + "Offset": 418, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_3", + "Offset": 419, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_4", + "Offset": 420, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_5", + "Offset": 421, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_6", + "Offset": 422, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_7", + "Offset": 423, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_0", + "Offset": 424, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_1", + "Offset": 425, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_2", + "Offset": 426, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_3", + "Offset": 427, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_4", + "Offset": 428, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_5", + "Offset": 429, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_6", + "Offset": 430, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_7", + "Offset": 431, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_0", + "Offset": 432, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_1", + "Offset": 433, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_2", + "Offset": 434, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_3", + "Offset": 435, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_4", + "Offset": 436, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_5", + "Offset": 437, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_6", + "Offset": 438, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_7", + "Offset": 439, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_0", + "Offset": 440, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_1", + "Offset": 441, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_2", + "Offset": 442, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_3", + "Offset": 443, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_4", + "Offset": 444, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_5", + "Offset": 445, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_6", + "Offset": 446, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_7", + "Offset": 447, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_0", + "Offset": 448, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_1", + "Offset": 449, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_2", + "Offset": 450, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_3", + "Offset": 451, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_4", + "Offset": 452, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_5", + "Offset": 453, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_6", + "Offset": 454, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_7", + "Offset": 455, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_0", + "Offset": 456, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_1", + "Offset": 457, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_2", + "Offset": 458, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_3", + "Offset": 459, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_4", + "Offset": 460, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_5", + "Offset": 461, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_6", + "Offset": 462, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_7", + "Offset": 463, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_0", + "Offset": 464, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_1", + "Offset": 465, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_2", + "Offset": 466, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_3", + "Offset": 467, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_4", + "Offset": 468, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_5", + "Offset": 469, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_6", + "Offset": 470, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_7", + "Offset": 471, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_0", + "Offset": 472, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_1", + "Offset": 473, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_2", + "Offset": 474, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_3", + "Offset": 475, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_4", + "Offset": 476, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_5", + "Offset": 477, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_6", + "Offset": 478, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_7", + "Offset": 479, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_0", + "Offset": 480, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_1", + "Offset": 481, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_2", + "Offset": 482, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_3", + "Offset": 483, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_4", + "Offset": 484, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_5", + "Offset": 485, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_6", + "Offset": 486, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_7", + "Offset": 487, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_0", + "Offset": 488, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_1", + "Offset": 489, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_2", + "Offset": 490, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_3", + "Offset": 491, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_4", + "Offset": 492, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_5", + "Offset": 493, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_6", + "Offset": 494, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_7", + "Offset": 495, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_0", + "Offset": 496, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_1", + "Offset": 497, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_2", + "Offset": 498, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_3", + "Offset": 499, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_4", + "Offset": 500, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_5", + "Offset": 501, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_6", + "Offset": 502, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_7", + "Offset": 503, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_0", + "Offset": 504, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_1", + "Offset": 505, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_2", + "Offset": 506, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_3", + "Offset": 507, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_4", + "Offset": 508, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_5", + "Offset": 509, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_6", + "Offset": 510, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_7", + "Offset": 511, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "abb_omnicore_robot/DI_64_bytes", + "Submodules": [ + { + "Name": "DI 64 bytes", + "HardwareIdentifier": 263, + "Inputs": { + "StartAddress": "0.0", + "EndAddress": "63.7", + "Length": 512, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_0", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_1", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_2", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_3", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_4", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_5", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_6", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_7", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_0", + "Offset": 16, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_1", + "Offset": 17, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_2", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_3", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_4", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_5", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_6", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_7", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_0", + "Offset": 24, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_1", + "Offset": 25, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_2", + "Offset": 26, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_3", + "Offset": 27, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_4", + "Offset": 28, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_5", + "Offset": 29, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_6", + "Offset": 30, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_7", + "Offset": 31, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_0", + "Offset": 32, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_1", + "Offset": 33, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_2", + "Offset": 34, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_3", + "Offset": 35, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_4", + "Offset": 36, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_5", + "Offset": 37, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_6", + "Offset": 38, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_7", + "Offset": 39, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_0", + "Offset": 40, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_1", + "Offset": 41, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_2", + "Offset": 42, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_3", + "Offset": 43, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_4", + "Offset": 44, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_5", + "Offset": 45, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_6", + "Offset": 46, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_7", + "Offset": 47, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_0", + "Offset": 48, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_1", + "Offset": 49, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_2", + "Offset": 50, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_3", + "Offset": 51, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_4", + "Offset": 52, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_5", + "Offset": 53, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_6", + "Offset": 54, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_7", + "Offset": 55, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_0", + "Offset": 56, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_1", + "Offset": 57, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_2", + "Offset": 58, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_3", + "Offset": 59, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_4", + "Offset": 60, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_5", + "Offset": 61, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_6", + "Offset": 62, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_7", + "Offset": 63, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_0", + "Offset": 64, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_1", + "Offset": 65, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_2", + "Offset": 66, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_3", + "Offset": 67, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_4", + "Offset": 68, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_5", + "Offset": 69, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_6", + "Offset": 70, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_7", + "Offset": 71, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_0", + "Offset": 72, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_1", + "Offset": 73, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_2", + "Offset": 74, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_3", + "Offset": 75, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_4", + "Offset": 76, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_5", + "Offset": 77, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_6", + "Offset": 78, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_7", + "Offset": 79, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_0", + "Offset": 80, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_1", + "Offset": 81, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_2", + "Offset": 82, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_3", + "Offset": 83, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_4", + "Offset": 84, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_5", + "Offset": 85, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_6", + "Offset": 86, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_7", + "Offset": 87, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_0", + "Offset": 88, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_1", + "Offset": 89, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_2", + "Offset": 90, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_3", + "Offset": 91, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_4", + "Offset": 92, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_5", + "Offset": 93, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_6", + "Offset": 94, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_7", + "Offset": 95, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_0", + "Offset": 96, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_1", + "Offset": 97, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_2", + "Offset": 98, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_3", + "Offset": 99, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_4", + "Offset": 100, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_5", + "Offset": 101, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_6", + "Offset": 102, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_7", + "Offset": 103, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_0", + "Offset": 104, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_1", + "Offset": 105, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_2", + "Offset": 106, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_3", + "Offset": 107, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_4", + "Offset": 108, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_5", + "Offset": 109, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_6", + "Offset": 110, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_7", + "Offset": 111, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_0", + "Offset": 112, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_1", + "Offset": 113, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_2", + "Offset": 114, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_3", + "Offset": 115, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_4", + "Offset": 116, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_5", + "Offset": 117, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_6", + "Offset": 118, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_7", + "Offset": 119, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_0", + "Offset": 120, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_1", + "Offset": 121, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_2", + "Offset": 122, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_3", + "Offset": 123, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_4", + "Offset": 124, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_5", + "Offset": 125, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_6", + "Offset": 126, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_7", + "Offset": 127, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_0", + "Offset": 128, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_1", + "Offset": 129, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_2", + "Offset": 130, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_3", + "Offset": 131, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_4", + "Offset": 132, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_5", + "Offset": 133, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_6", + "Offset": 134, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_7", + "Offset": 135, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_0", + "Offset": 136, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_1", + "Offset": 137, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_2", + "Offset": 138, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_3", + "Offset": 139, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_4", + "Offset": 140, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_5", + "Offset": 141, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_6", + "Offset": 142, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_7", + "Offset": 143, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_0", + "Offset": 144, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_1", + "Offset": 145, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_2", + "Offset": 146, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_3", + "Offset": 147, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_4", + "Offset": 148, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_5", + "Offset": 149, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_6", + "Offset": 150, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_7", + "Offset": 151, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_0", + "Offset": 152, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_1", + "Offset": 153, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_2", + "Offset": 154, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_3", + "Offset": 155, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_4", + "Offset": 156, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_5", + "Offset": 157, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_6", + "Offset": 158, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_7", + "Offset": 159, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_0", + "Offset": 160, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_1", + "Offset": 161, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_2", + "Offset": 162, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_3", + "Offset": 163, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_4", + "Offset": 164, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_5", + "Offset": 165, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_6", + "Offset": 166, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_7", + "Offset": 167, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_0", + "Offset": 168, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_1", + "Offset": 169, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_2", + "Offset": 170, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_3", + "Offset": 171, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_4", + "Offset": 172, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_5", + "Offset": 173, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_6", + "Offset": 174, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_7", + "Offset": 175, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_0", + "Offset": 176, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_1", + "Offset": 177, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_2", + "Offset": 178, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_3", + "Offset": 179, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_4", + "Offset": 180, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_5", + "Offset": 181, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_6", + "Offset": 182, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_7", + "Offset": 183, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_0", + "Offset": 184, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_1", + "Offset": 185, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_2", + "Offset": 186, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_3", + "Offset": 187, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_4", + "Offset": 188, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_5", + "Offset": 189, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_6", + "Offset": 190, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_7", + "Offset": 191, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_0", + "Offset": 192, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_1", + "Offset": 193, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_2", + "Offset": 194, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_3", + "Offset": 195, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_4", + "Offset": 196, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_5", + "Offset": 197, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_6", + "Offset": 198, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_7", + "Offset": 199, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_0", + "Offset": 200, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_1", + "Offset": 201, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_2", + "Offset": 202, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_3", + "Offset": 203, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_4", + "Offset": 204, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_5", + "Offset": 205, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_6", + "Offset": 206, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_7", + "Offset": 207, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_0", + "Offset": 208, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_1", + "Offset": 209, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_2", + "Offset": 210, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_3", + "Offset": 211, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_4", + "Offset": 212, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_5", + "Offset": 213, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_6", + "Offset": 214, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_7", + "Offset": 215, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_0", + "Offset": 216, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_1", + "Offset": 217, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_2", + "Offset": 218, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_3", + "Offset": 219, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_4", + "Offset": 220, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_5", + "Offset": 221, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_6", + "Offset": 222, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_7", + "Offset": 223, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_0", + "Offset": 224, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_1", + "Offset": 225, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_2", + "Offset": 226, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_3", + "Offset": 227, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_4", + "Offset": 228, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_5", + "Offset": 229, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_6", + "Offset": 230, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_7", + "Offset": 231, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_0", + "Offset": 232, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_1", + "Offset": 233, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_2", + "Offset": 234, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_3", + "Offset": 235, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_4", + "Offset": 236, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_5", + "Offset": 237, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_6", + "Offset": 238, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_7", + "Offset": 239, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_0", + "Offset": 240, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_1", + "Offset": 241, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_2", + "Offset": 242, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_3", + "Offset": 243, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_4", + "Offset": 244, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_5", + "Offset": 245, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_6", + "Offset": 246, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_7", + "Offset": 247, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_0", + "Offset": 248, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_1", + "Offset": 249, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_2", + "Offset": 250, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_3", + "Offset": 251, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_4", + "Offset": 252, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_5", + "Offset": 253, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_6", + "Offset": 254, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_7", + "Offset": 255, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_0", + "Offset": 256, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_1", + "Offset": 257, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_2", + "Offset": 258, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_3", + "Offset": 259, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_4", + "Offset": 260, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_5", + "Offset": 261, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_6", + "Offset": 262, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_7", + "Offset": 263, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_0", + "Offset": 264, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_1", + "Offset": 265, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_2", + "Offset": 266, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_3", + "Offset": 267, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_4", + "Offset": 268, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_5", + "Offset": 269, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_6", + "Offset": 270, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_7", + "Offset": 271, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_0", + "Offset": 272, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_1", + "Offset": 273, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_2", + "Offset": 274, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_3", + "Offset": 275, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_4", + "Offset": 276, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_5", + "Offset": 277, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_6", + "Offset": 278, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_7", + "Offset": 279, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_0", + "Offset": 280, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_1", + "Offset": 281, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_2", + "Offset": 282, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_3", + "Offset": 283, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_4", + "Offset": 284, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_5", + "Offset": 285, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_6", + "Offset": 286, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_7", + "Offset": 287, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_0", + "Offset": 288, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_1", + "Offset": 289, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_2", + "Offset": 290, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_3", + "Offset": 291, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_4", + "Offset": 292, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_5", + "Offset": 293, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_6", + "Offset": 294, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_7", + "Offset": 295, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_0", + "Offset": 296, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_1", + "Offset": 297, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_2", + "Offset": 298, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_3", + "Offset": 299, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_4", + "Offset": 300, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_5", + "Offset": 301, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_6", + "Offset": 302, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_7", + "Offset": 303, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_0", + "Offset": 304, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_1", + "Offset": 305, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_2", + "Offset": 306, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_3", + "Offset": 307, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_4", + "Offset": 308, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_5", + "Offset": 309, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_6", + "Offset": 310, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_7", + "Offset": 311, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_0", + "Offset": 312, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_1", + "Offset": 313, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_2", + "Offset": 314, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_3", + "Offset": 315, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_4", + "Offset": 316, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_5", + "Offset": 317, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_6", + "Offset": 318, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_7", + "Offset": 319, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_0", + "Offset": 320, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_1", + "Offset": 321, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_2", + "Offset": 322, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_3", + "Offset": 323, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_4", + "Offset": 324, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_5", + "Offset": 325, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_6", + "Offset": 326, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_7", + "Offset": 327, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_0", + "Offset": 328, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_1", + "Offset": 329, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_2", + "Offset": 330, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_3", + "Offset": 331, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_4", + "Offset": 332, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_5", + "Offset": 333, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_6", + "Offset": 334, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_7", + "Offset": 335, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_0", + "Offset": 336, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_1", + "Offset": 337, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_2", + "Offset": 338, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_3", + "Offset": 339, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_4", + "Offset": 340, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_5", + "Offset": 341, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_6", + "Offset": 342, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_7", + "Offset": 343, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_0", + "Offset": 344, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_1", + "Offset": 345, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_2", + "Offset": 346, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_3", + "Offset": 347, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_4", + "Offset": 348, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_5", + "Offset": 349, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_6", + "Offset": 350, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_7", + "Offset": 351, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_0", + "Offset": 352, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_1", + "Offset": 353, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_2", + "Offset": 354, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_3", + "Offset": 355, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_4", + "Offset": 356, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_5", + "Offset": 357, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_6", + "Offset": 358, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_7", + "Offset": 359, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_0", + "Offset": 360, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_1", + "Offset": 361, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_2", + "Offset": 362, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_3", + "Offset": 363, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_4", + "Offset": 364, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_5", + "Offset": 365, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_6", + "Offset": 366, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_7", + "Offset": 367, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_0", + "Offset": 368, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_1", + "Offset": 369, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_2", + "Offset": 370, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_3", + "Offset": 371, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_4", + "Offset": 372, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_5", + "Offset": 373, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_6", + "Offset": 374, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_7", + "Offset": 375, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_0", + "Offset": 376, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_1", + "Offset": 377, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_2", + "Offset": 378, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_3", + "Offset": 379, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_4", + "Offset": 380, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_5", + "Offset": 381, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_6", + "Offset": 382, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_7", + "Offset": 383, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_0", + "Offset": 384, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_1", + "Offset": 385, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_2", + "Offset": 386, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_3", + "Offset": 387, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_4", + "Offset": 388, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_5", + "Offset": 389, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_6", + "Offset": 390, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_7", + "Offset": 391, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_0", + "Offset": 392, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_1", + "Offset": 393, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_2", + "Offset": 394, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_3", + "Offset": 395, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_4", + "Offset": 396, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_5", + "Offset": 397, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_6", + "Offset": 398, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_7", + "Offset": 399, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_0", + "Offset": 400, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_1", + "Offset": 401, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_2", + "Offset": 402, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_3", + "Offset": 403, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_4", + "Offset": 404, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_5", + "Offset": 405, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_6", + "Offset": 406, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_7", + "Offset": 407, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_0", + "Offset": 408, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_1", + "Offset": 409, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_2", + "Offset": 410, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_3", + "Offset": 411, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_4", + "Offset": 412, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_5", + "Offset": 413, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_6", + "Offset": 414, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_7", + "Offset": 415, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_0", + "Offset": 416, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_1", + "Offset": 417, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_2", + "Offset": 418, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_3", + "Offset": 419, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_4", + "Offset": 420, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_5", + "Offset": 421, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_6", + "Offset": 422, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_7", + "Offset": 423, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_0", + "Offset": 424, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_1", + "Offset": 425, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_2", + "Offset": 426, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_3", + "Offset": 427, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_4", + "Offset": 428, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_5", + "Offset": 429, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_6", + "Offset": 430, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_7", + "Offset": 431, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_0", + "Offset": 432, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_1", + "Offset": 433, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_2", + "Offset": 434, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_3", + "Offset": 435, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_4", + "Offset": 436, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_5", + "Offset": 437, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_6", + "Offset": 438, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_7", + "Offset": 439, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_0", + "Offset": 440, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_1", + "Offset": 441, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_2", + "Offset": 442, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_3", + "Offset": 443, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_4", + "Offset": 444, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_5", + "Offset": 445, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_6", + "Offset": 446, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_7", + "Offset": 447, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_0", + "Offset": 448, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_1", + "Offset": 449, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_2", + "Offset": 450, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_3", + "Offset": 451, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_4", + "Offset": 452, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_5", + "Offset": 453, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_6", + "Offset": 454, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_7", + "Offset": 455, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_0", + "Offset": 456, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_1", + "Offset": 457, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_2", + "Offset": 458, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_3", + "Offset": 459, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_4", + "Offset": 460, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_5", + "Offset": 461, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_6", + "Offset": 462, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_7", + "Offset": 463, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_0", + "Offset": 464, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_1", + "Offset": 465, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_2", + "Offset": 466, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_3", + "Offset": 467, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_4", + "Offset": 468, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_5", + "Offset": 469, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_6", + "Offset": 470, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_7", + "Offset": 471, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_0", + "Offset": 472, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_1", + "Offset": 473, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_2", + "Offset": 474, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_3", + "Offset": 475, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_4", + "Offset": 476, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_5", + "Offset": 477, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_6", + "Offset": 478, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_7", + "Offset": 479, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_0", + "Offset": 480, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_1", + "Offset": 481, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_2", + "Offset": 482, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_3", + "Offset": 483, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_4", + "Offset": 484, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_5", + "Offset": 485, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_6", + "Offset": 486, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_7", + "Offset": 487, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_0", + "Offset": 488, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_1", + "Offset": 489, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_2", + "Offset": 490, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_3", + "Offset": 491, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_4", + "Offset": 492, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_5", + "Offset": 493, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_6", + "Offset": 494, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_7", + "Offset": 495, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_0", + "Offset": 496, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_1", + "Offset": 497, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_2", + "Offset": 498, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_3", + "Offset": 499, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_4", + "Offset": 500, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_5", + "Offset": 501, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_6", + "Offset": 502, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_7", + "Offset": 503, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_0", + "Offset": 504, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_1", + "Offset": 505, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_2", + "Offset": 506, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_3", + "Offset": 507, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_4", + "Offset": 508, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_5", + "Offset": 509, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_6", + "Offset": 510, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_7", + "Offset": 511, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "abb_omnicore_robot/DO_64_bytes", + "Submodules": [ + { + "Name": "DO 64 bytes", + "HardwareIdentifier": 262, + "Outputs": { + "StartAddress": "0.0", + "EndAddress": "63.7", + "Length": 512, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_0_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_0", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_1", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_2", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_3", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_4", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_5", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_6", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1_7", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_0", + "Offset": 16, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_1", + "Offset": 17, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_2", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_3", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_4", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_5", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_6", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2_7", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_0", + "Offset": 24, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_1", + "Offset": 25, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_2", + "Offset": 26, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_3", + "Offset": 27, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_4", + "Offset": 28, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_5", + "Offset": 29, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_6", + "Offset": 30, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3_7", + "Offset": 31, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_0", + "Offset": 32, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_1", + "Offset": 33, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_2", + "Offset": 34, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_3", + "Offset": 35, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_4", + "Offset": 36, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_5", + "Offset": 37, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_6", + "Offset": 38, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4_7", + "Offset": 39, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_0", + "Offset": 40, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_1", + "Offset": 41, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_2", + "Offset": 42, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_3", + "Offset": 43, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_4", + "Offset": 44, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_5", + "Offset": 45, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_6", + "Offset": 46, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5_7", + "Offset": 47, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_0", + "Offset": 48, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_1", + "Offset": 49, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_2", + "Offset": 50, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_3", + "Offset": 51, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_4", + "Offset": 52, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_5", + "Offset": 53, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_6", + "Offset": 54, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6_7", + "Offset": 55, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_0", + "Offset": 56, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_1", + "Offset": 57, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_2", + "Offset": 58, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_3", + "Offset": 59, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_4", + "Offset": 60, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_5", + "Offset": 61, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_6", + "Offset": 62, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7_7", + "Offset": 63, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_0", + "Offset": 64, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_1", + "Offset": 65, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_2", + "Offset": 66, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_3", + "Offset": 67, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_4", + "Offset": 68, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_5", + "Offset": 69, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_6", + "Offset": 70, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8_7", + "Offset": 71, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_0", + "Offset": 72, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_1", + "Offset": 73, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_2", + "Offset": 74, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_3", + "Offset": 75, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_4", + "Offset": 76, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_5", + "Offset": 77, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_6", + "Offset": 78, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9_7", + "Offset": 79, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_0", + "Offset": 80, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_1", + "Offset": 81, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_2", + "Offset": 82, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_3", + "Offset": 83, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_4", + "Offset": 84, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_5", + "Offset": 85, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_6", + "Offset": 86, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10_7", + "Offset": 87, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_0", + "Offset": 88, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_1", + "Offset": 89, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_2", + "Offset": 90, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_3", + "Offset": 91, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_4", + "Offset": 92, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_5", + "Offset": 93, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_6", + "Offset": 94, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11_7", + "Offset": 95, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_0", + "Offset": 96, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_1", + "Offset": 97, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_2", + "Offset": 98, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_3", + "Offset": 99, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_4", + "Offset": 100, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_5", + "Offset": 101, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_6", + "Offset": 102, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12_7", + "Offset": 103, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_0", + "Offset": 104, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_1", + "Offset": 105, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_2", + "Offset": 106, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_3", + "Offset": 107, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_4", + "Offset": 108, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_5", + "Offset": 109, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_6", + "Offset": 110, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13_7", + "Offset": 111, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_0", + "Offset": 112, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_1", + "Offset": 113, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_2", + "Offset": 114, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_3", + "Offset": 115, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_4", + "Offset": 116, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_5", + "Offset": 117, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_6", + "Offset": 118, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14_7", + "Offset": 119, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_0", + "Offset": 120, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_1", + "Offset": 121, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_2", + "Offset": 122, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_3", + "Offset": 123, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_4", + "Offset": 124, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_5", + "Offset": 125, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_6", + "Offset": 126, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15_7", + "Offset": 127, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_0", + "Offset": 128, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_1", + "Offset": 129, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_2", + "Offset": 130, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_3", + "Offset": 131, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_4", + "Offset": 132, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_5", + "Offset": 133, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_6", + "Offset": 134, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_16_7", + "Offset": 135, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_0", + "Offset": 136, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_1", + "Offset": 137, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_2", + "Offset": 138, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_3", + "Offset": 139, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_4", + "Offset": 140, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_5", + "Offset": 141, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_6", + "Offset": 142, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_17_7", + "Offset": 143, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_0", + "Offset": 144, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_1", + "Offset": 145, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_2", + "Offset": 146, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_3", + "Offset": 147, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_4", + "Offset": 148, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_5", + "Offset": 149, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_6", + "Offset": 150, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_18_7", + "Offset": 151, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_0", + "Offset": 152, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_1", + "Offset": 153, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_2", + "Offset": 154, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_3", + "Offset": 155, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_4", + "Offset": 156, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_5", + "Offset": 157, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_6", + "Offset": 158, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_19_7", + "Offset": 159, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_0", + "Offset": 160, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_1", + "Offset": 161, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_2", + "Offset": 162, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_3", + "Offset": 163, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_4", + "Offset": 164, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_5", + "Offset": 165, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_6", + "Offset": 166, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_20_7", + "Offset": 167, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_0", + "Offset": 168, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_1", + "Offset": 169, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_2", + "Offset": 170, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_3", + "Offset": 171, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_4", + "Offset": 172, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_5", + "Offset": 173, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_6", + "Offset": 174, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_21_7", + "Offset": 175, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_0", + "Offset": 176, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_1", + "Offset": 177, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_2", + "Offset": 178, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_3", + "Offset": 179, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_4", + "Offset": 180, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_5", + "Offset": 181, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_6", + "Offset": 182, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_22_7", + "Offset": 183, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_0", + "Offset": 184, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_1", + "Offset": 185, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_2", + "Offset": 186, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_3", + "Offset": 187, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_4", + "Offset": 188, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_5", + "Offset": 189, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_6", + "Offset": 190, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_23_7", + "Offset": 191, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_0", + "Offset": 192, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_1", + "Offset": 193, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_2", + "Offset": 194, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_3", + "Offset": 195, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_4", + "Offset": 196, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_5", + "Offset": 197, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_6", + "Offset": 198, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_24_7", + "Offset": 199, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_0", + "Offset": 200, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_1", + "Offset": 201, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_2", + "Offset": 202, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_3", + "Offset": 203, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_4", + "Offset": 204, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_5", + "Offset": 205, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_6", + "Offset": 206, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_25_7", + "Offset": 207, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_0", + "Offset": 208, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_1", + "Offset": 209, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_2", + "Offset": 210, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_3", + "Offset": 211, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_4", + "Offset": 212, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_5", + "Offset": 213, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_6", + "Offset": 214, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_26_7", + "Offset": 215, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_0", + "Offset": 216, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_1", + "Offset": 217, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_2", + "Offset": 218, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_3", + "Offset": 219, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_4", + "Offset": 220, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_5", + "Offset": 221, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_6", + "Offset": 222, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_27_7", + "Offset": 223, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_0", + "Offset": 224, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_1", + "Offset": 225, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_2", + "Offset": 226, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_3", + "Offset": 227, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_4", + "Offset": 228, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_5", + "Offset": 229, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_6", + "Offset": 230, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_28_7", + "Offset": 231, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_0", + "Offset": 232, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_1", + "Offset": 233, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_2", + "Offset": 234, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_3", + "Offset": 235, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_4", + "Offset": 236, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_5", + "Offset": 237, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_6", + "Offset": 238, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_29_7", + "Offset": 239, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_0", + "Offset": 240, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_1", + "Offset": 241, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_2", + "Offset": 242, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_3", + "Offset": 243, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_4", + "Offset": 244, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_5", + "Offset": 245, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_6", + "Offset": 246, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_30_7", + "Offset": 247, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_0", + "Offset": 248, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_1", + "Offset": 249, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_2", + "Offset": 250, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_3", + "Offset": 251, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_4", + "Offset": 252, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_5", + "Offset": 253, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_6", + "Offset": 254, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_31_7", + "Offset": 255, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_0", + "Offset": 256, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_1", + "Offset": 257, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_2", + "Offset": 258, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_3", + "Offset": 259, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_4", + "Offset": 260, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_5", + "Offset": 261, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_6", + "Offset": 262, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_32_7", + "Offset": 263, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_0", + "Offset": 264, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_1", + "Offset": 265, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_2", + "Offset": 266, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_3", + "Offset": 267, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_4", + "Offset": 268, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_5", + "Offset": 269, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_6", + "Offset": 270, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_33_7", + "Offset": 271, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_0", + "Offset": 272, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_1", + "Offset": 273, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_2", + "Offset": 274, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_3", + "Offset": 275, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_4", + "Offset": 276, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_5", + "Offset": 277, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_6", + "Offset": 278, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_34_7", + "Offset": 279, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_0", + "Offset": 280, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_1", + "Offset": 281, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_2", + "Offset": 282, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_3", + "Offset": 283, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_4", + "Offset": 284, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_5", + "Offset": 285, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_6", + "Offset": 286, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_35_7", + "Offset": 287, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_0", + "Offset": 288, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_1", + "Offset": 289, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_2", + "Offset": 290, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_3", + "Offset": 291, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_4", + "Offset": 292, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_5", + "Offset": 293, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_6", + "Offset": 294, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_36_7", + "Offset": 295, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_0", + "Offset": 296, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_1", + "Offset": 297, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_2", + "Offset": 298, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_3", + "Offset": 299, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_4", + "Offset": 300, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_5", + "Offset": 301, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_6", + "Offset": 302, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_37_7", + "Offset": 303, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_0", + "Offset": 304, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_1", + "Offset": 305, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_2", + "Offset": 306, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_3", + "Offset": 307, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_4", + "Offset": 308, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_5", + "Offset": 309, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_6", + "Offset": 310, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_38_7", + "Offset": 311, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_0", + "Offset": 312, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_1", + "Offset": 313, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_2", + "Offset": 314, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_3", + "Offset": 315, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_4", + "Offset": 316, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_5", + "Offset": 317, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_6", + "Offset": 318, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_39_7", + "Offset": 319, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_0", + "Offset": 320, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_1", + "Offset": 321, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_2", + "Offset": 322, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_3", + "Offset": 323, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_4", + "Offset": 324, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_5", + "Offset": 325, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_6", + "Offset": 326, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_40_7", + "Offset": 327, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_0", + "Offset": 328, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_1", + "Offset": 329, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_2", + "Offset": 330, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_3", + "Offset": 331, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_4", + "Offset": 332, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_5", + "Offset": 333, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_6", + "Offset": 334, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_41_7", + "Offset": 335, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_0", + "Offset": 336, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_1", + "Offset": 337, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_2", + "Offset": 338, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_3", + "Offset": 339, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_4", + "Offset": 340, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_5", + "Offset": 341, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_6", + "Offset": 342, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_42_7", + "Offset": 343, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_0", + "Offset": 344, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_1", + "Offset": 345, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_2", + "Offset": 346, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_3", + "Offset": 347, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_4", + "Offset": 348, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_5", + "Offset": 349, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_6", + "Offset": 350, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_43_7", + "Offset": 351, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_0", + "Offset": 352, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_1", + "Offset": 353, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_2", + "Offset": 354, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_3", + "Offset": 355, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_4", + "Offset": 356, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_5", + "Offset": 357, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_6", + "Offset": 358, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_44_7", + "Offset": 359, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_0", + "Offset": 360, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_1", + "Offset": 361, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_2", + "Offset": 362, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_3", + "Offset": 363, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_4", + "Offset": 364, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_5", + "Offset": 365, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_6", + "Offset": 366, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_45_7", + "Offset": 367, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_0", + "Offset": 368, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_1", + "Offset": 369, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_2", + "Offset": 370, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_3", + "Offset": 371, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_4", + "Offset": 372, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_5", + "Offset": 373, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_6", + "Offset": 374, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_46_7", + "Offset": 375, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_0", + "Offset": 376, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_1", + "Offset": 377, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_2", + "Offset": 378, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_3", + "Offset": 379, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_4", + "Offset": 380, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_5", + "Offset": 381, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_6", + "Offset": 382, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_47_7", + "Offset": 383, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_0", + "Offset": 384, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_1", + "Offset": 385, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_2", + "Offset": 386, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_3", + "Offset": 387, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_4", + "Offset": 388, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_5", + "Offset": 389, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_6", + "Offset": 390, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_48_7", + "Offset": 391, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_0", + "Offset": 392, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_1", + "Offset": 393, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_2", + "Offset": 394, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_3", + "Offset": 395, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_4", + "Offset": 396, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_5", + "Offset": 397, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_6", + "Offset": 398, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_49_7", + "Offset": 399, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_0", + "Offset": 400, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_1", + "Offset": 401, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_2", + "Offset": 402, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_3", + "Offset": 403, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_4", + "Offset": 404, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_5", + "Offset": 405, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_6", + "Offset": 406, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_50_7", + "Offset": 407, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_0", + "Offset": 408, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_1", + "Offset": 409, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_2", + "Offset": 410, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_3", + "Offset": 411, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_4", + "Offset": 412, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_5", + "Offset": 413, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_6", + "Offset": 414, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_51_7", + "Offset": 415, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_0", + "Offset": 416, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_1", + "Offset": 417, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_2", + "Offset": 418, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_3", + "Offset": 419, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_4", + "Offset": 420, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_5", + "Offset": 421, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_6", + "Offset": 422, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_52_7", + "Offset": 423, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_0", + "Offset": 424, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_1", + "Offset": 425, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_2", + "Offset": 426, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_3", + "Offset": 427, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_4", + "Offset": 428, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_5", + "Offset": 429, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_6", + "Offset": 430, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_53_7", + "Offset": 431, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_0", + "Offset": 432, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_1", + "Offset": 433, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_2", + "Offset": 434, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_3", + "Offset": 435, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_4", + "Offset": 436, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_5", + "Offset": 437, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_6", + "Offset": 438, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_54_7", + "Offset": 439, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_0", + "Offset": 440, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_1", + "Offset": 441, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_2", + "Offset": 442, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_3", + "Offset": 443, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_4", + "Offset": 444, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_5", + "Offset": 445, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_6", + "Offset": 446, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_55_7", + "Offset": 447, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_0", + "Offset": 448, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_1", + "Offset": 449, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_2", + "Offset": 450, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_3", + "Offset": 451, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_4", + "Offset": 452, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_5", + "Offset": 453, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_6", + "Offset": 454, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_56_7", + "Offset": 455, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_0", + "Offset": 456, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_1", + "Offset": 457, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_2", + "Offset": 458, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_3", + "Offset": 459, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_4", + "Offset": 460, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_5", + "Offset": 461, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_6", + "Offset": 462, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_57_7", + "Offset": 463, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_0", + "Offset": 464, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_1", + "Offset": 465, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_2", + "Offset": 466, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_3", + "Offset": 467, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_4", + "Offset": 468, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_5", + "Offset": 469, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_6", + "Offset": 470, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_58_7", + "Offset": 471, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_0", + "Offset": 472, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_1", + "Offset": 473, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_2", + "Offset": 474, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_3", + "Offset": 475, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_4", + "Offset": 476, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_5", + "Offset": 477, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_6", + "Offset": 478, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_59_7", + "Offset": 479, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_0", + "Offset": 480, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_1", + "Offset": 481, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_2", + "Offset": 482, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_3", + "Offset": 483, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_4", + "Offset": 484, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_5", + "Offset": 485, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_6", + "Offset": 486, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_60_7", + "Offset": 487, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_0", + "Offset": 488, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_1", + "Offset": 489, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_2", + "Offset": 490, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_3", + "Offset": 491, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_4", + "Offset": 492, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_5", + "Offset": 493, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_6", + "Offset": 494, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_61_7", + "Offset": 495, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_0", + "Offset": 496, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_1", + "Offset": 497, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_2", + "Offset": 498, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_3", + "Offset": 499, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_4", + "Offset": 500, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_5", + "Offset": 501, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_6", + "Offset": 502, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_62_7", + "Offset": 503, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_0", + "Offset": 504, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_1", + "Offset": 505, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_2", + "Offset": 506, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_3", + "Offset": 507, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_4", + "Offset": 508, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_5", + "Offset": 509, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_6", + "Offset": 510, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_63_7", + "Offset": 511, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json new file mode 100644 index 000000000..85d9452ed --- /dev/null +++ b/src/components.abb.robotics/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json @@ -0,0 +1,9 @@ +{ + "PKIData": "AQAAAAAAAAAAAAAAAAAAAAEBAcIgAAACAAAAAAAAAAAAAwAAAN8ALS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkRGTjhaWVlhVkxERXIwUkErVSs4T3FhWkFocQp0cCtDS1B4QTFpKzdLanNzWmoyc1lzRlBMU1ZaUm9vQTlicVBZMHJaN09SbzZLMjF2UFE2UHJxVGJxKy9QdjFwCmlmZWNnQmZnMjZ3cDY0b3ZHcFNLS0tzczRTcHVlL3NFSVZDV09RPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCnsBAQACAAAnEAAgo45P+ypK34bfNfD6h7HKWQc27J5gR12Luve2cPdmNigBACAADAAQweqmyMzGwWseybZ5eLee4QEAAAE2GkCy5hiVBibMB5tLzJqRZdm6mqJNUQ5/XTphMESJU267VpzenVbocbZoxTwUdbv4UEYbeAlr8+6PM+9x5WITvi7nlZldqtRiBjlmfSi91gIb6edTNqcTK4Ll/Hapz0soNDYKA9NoyMi3cvmC7YIzvPH/L7nwBRnx8cuyY3lopL9SQd/IZIas2EgJmoZ8kIC7w6OLqJEmlTFZY2F4MPuVWjnU2lOFL9R5ztRoriTIf6eMWoN7kF4F9JCeIExamg9LY88UqLBMgeKGQDAyRa6JfwAte1UEN1jy+QGrGvtMKZ7Jtu8Axgei0bACHFFAOHam6zrKcEbxB+dv4/cYXGXZDrn8xPxQx035FRlIPZp0aVffN2Tc+Sw6yepwMwkid1fymnLcGTMCeRp937/BNYMk8qZq4NUEXQIACWxvY2FsaG9zdAEAAAAAAAAAAQAAAAIAAAAAAAAAFACjB9zEYlarVMvNzEruzLd6aQ250bQGAQAGsC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJRXN6Q0NBNXVnQXdJQkFnSVVXU2FGUVNmakRPa25KMnpjanlaYTZqUzByd2d3RFFZSktvWklodmNOQVFFTEJRQXdlekVMTUFrRw0KQTFVRUJoTUNXRmd4RWpBUUJnTlZCQWdNQ1ZOMFlYUmxUbUZ0WlRFUk1BOEdBMVVFQnd3SVEybDBlVTVoYldVeEZEQVNCZ05WQkFvTQ0KQzBOdmJYQmhibmxPWVcxbE1Sc3dHUVlEVlFRTERCSkRiMjF3WVc1NVUyVmpkR2x2Yms1aGJXVXhFakFRQmdOVkJBTU1DV3h2WTJGcw0KYUc5emREQWVGdzB5TmpBeU1qQXdOak0xTXpsYUZ3MHpOakF5TVRnd05qTTFNemxhTUhzeEN6QUpCZ05WQkFZVEFsaFlNUkl3RUFZRA0KVlFRSURBbFRkR0YwWlU1aGJXVXhFVEFQQmdOVkJBY01DRU5wZEhsT1lXMWxNUlF3RWdZRFZRUUtEQXREYjIxd1lXNTVUbUZ0WlRFYg0KTUJrR0ExVUVDd3dTUTI5dGNHRnVlVk5sWTNScGIyNU9ZVzFsTVJJd0VBWURWUVFEREFsc2IyTmhiR2h2YzNRd2dnRWlNQTBHQ1NxRw0KU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREY5QkkxL2NzVm4zeGFwOUNVdy80M2lRam1nVGozU05HZjNKd1V6Z25xYTducA0KU3lLbGxrOXpBNFRYRWgwTFVWblVWVmJtaEl0QUxZQzN6YjlnVkVWbitPUExMWjB1SXJrd2Zud2VxTmZ2VTFyY2FMRWpTaFQ0cUNOYQ0KbEhJeGtjWkYrSTNpZnB4aHE0aFF2UTlFNytyUTlUKy9adkVBaDJtYWwzcDhneUhzbjc1TG9DdlQzbEtkSGRLeWFSYThUdGlndk9mRQ0KdDAwdm9ScElzeXh6d2NKaEpxNVZtdkFGZC9oY3gyeWVzZDQwcng3Qk9kbDBHUGlvOGFKalZzaEdva3g2QllIL1NTTEZTOWFxb2xLSg0KdEdjREtOSkhSWTJDeUZ2YkVrbzliYklmR3FNcFFoWDA4ak42dDFVbU5kbU5EYldiekJRcllNcGM2bkJHbWI4WEViQXZBZ01CQUFHag0KZ2dFdE1JSUJLVEFKQmdOVkhSTUVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUM5REFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSQ0KS3dZQkJRVUhBd0l3RXdZRFZSMFJCQXd3Q29JQWh3VEFxR1I0aGdBd0hRWURWUjBPQkJZRUZBNmpta3Yvb09jWmc4RDdueXNjMUxwUQ0KdCtQOE1JRzRCZ05WSFNNRWdiQXdnYTJBRkE2am1rdi9vT2NaZzhEN255c2MxTHBRdCtQOG9YK2tmVEI3TVFzd0NRWURWUVFHRXdKWQ0KV0RFU01CQUdBMVVFQ0F3SlUzUmhkR1ZPWVcxbE1SRXdEd1lEVlFRSERBaERhWFI1VG1GdFpURVVNQklHQTFVRUNnd0xRMjl0Y0dGdQ0KZVU1aGJXVXhHekFaQmdOVkJBc01Fa052YlhCaGJubFRaV04wYVc5dVRtRnRaVEVTTUJBR0ExVUVBd3dKYkc5allXeG9iM04wZ2hSWg0KSm9WQkorTU02U2NuYk55UEpscnFOTFN2Q0RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXZHQXVVc21NNW1GQXBhaDhHa0tHU2lrZg0KMUMxRnFpRTlicFBjbFoyN1BUZGNiUmxNRmZzRUlTSVpZSUNvbi9MVzQ5bTkvNkJsUkFSU2hZczU2cEVIeU1lckR5blNJSzh5aENobA0KZFZiOXYrTDQ0R3dSRmRWdHJFRWIxZjJTc2k2VS9udmw3cE5oTWRiTGE2M2N2Z1IydkF3bzFNSG5iNHZsQ1pYMjdncVVDWGFINVFSYw0KdWEzUzJscnB4M0JJa09udVAvcTMzZXpoWTJJOEtOYS9LSlRrNnEwcDlVNWwwTm1ha3dJdjNBM0J6a3g2TFBFRC9VMndmbDR2YnRiVQ0KeFl2SWZWcm50SnJOZ21nemV2VHJUOEZWZEdHY3JtbWdCR3lFblhObzN3TUp4MnVrb1hjZDlWMVhJRERqUGtJSVFGa0ZrSXhEME9sTg0KRG13WTVKS1U4T1E3K0E9PQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KFwgBAACzAQACAHwwejAUBgcqhkjOPQIBBgkrJAMDAggBAQsDYgAEh0SXjJRMog+eE0Th2GVPzoLRcP/Gy9FW24f8UeHbPa6OnfdLjcnVGsWMuv2muRoxhTLbva7fQRqDy6oDM49zAgGJg8y2WYxrJM9E8gIFTy82nTnQT4w4bTgIXVLo/HNcGCXuYRbSMzxsrsNWTWsvsAAg5RakLEweilxFeZFbNArH2lK2LGz7WaqC19WZPUfMwdYHXi0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRk5UQmZCZ2txaGtpRzl3MEJCUTB3VWpBeEJna3Foa2lHOXcwQkJRd3dKQVFROThBcnduSWpwT3VnOTBmWgp6Nk9GTEFJQ0NBQXdEQVlJS29aSWh2Y05BZ2tGQURBZEJnbGdoa2dCWlFNRUFTb0VFS3N1UUJkbExpNmNxSkdaCnRMUjBIc3dFZ2dUUTRIcXZ3ZTU0ZHVFWncwbW5zdU13bDYwb1hWVzB0bE1PSkIxQmU1M0dTMjVYNWlTQ25hNmIKMm81b0IxVU01WWswNTNJcXlMSm8vWUVBSXVFNkh3RTZWcjRWQW9GY0FJOW83aUVGR05SQTVPM3lyVWU5bWI0TApDNGlGNEZUekFicURDakRjRm83OGZ1R2VxdHExcGRlZk9MeUM3YkxWVDNNNzNUazNvQ0k1MDVidmlDM08xdDE2Cm9GdzZmZ1lOV0F1Ky9uaE51VHBuUzRaTzdOTTRNNTJvWEd4aUJDeG9ZOGlmcVdBZGpSQ2VDZTBScVQyQndlKzcKTW1LTEVSRW1KTWNpMjdZa0YwNGd2ZVpaWm95T3hZemgxbjVlQVFKb3FCa1EzTmZNK1E2QllCQ2VzNW9xazc3TQpUTEIxamhZdTF5cHloNm1zTFFoVkhldHpWc1ZHbWN1SENYT2xDUUg0R1oxT3U5VUd4YTh5VUc4MUp0TVc1bmNCCnVMZ0w2T1pQWE9uaUxKLzJML3ZHV2VFR0VIejROaUVDS3ZTU0Y4WmFER3VwS3ZuUlY1Y3JRWVRzUGJBSmYvc0gKVC8wRFhqYnhBM3ZMMXVnWFVlb1piT2tQZitkMjZ4eEFJVmJ2Qm14VFkzQmJ1MXhqNHhvbVdKT1VOdmsvS1BJSwp0T3pWVElybFU2SnVpTk85c3dsQ3BuNGpCRFhXL1ZjbEdPMHExQjZ3R1RGdlltWEQ0c1JnRjNkRG9tZS8zeGxzCnd1YTlXTXVnVGd4NGZiOE5RcFM2MndzUGJtZGozUEVnTE5rUGlLSEdlUWVjWjVhL0N2QjlNU1lpUjJRQnV3M1MKbHFybXNjWFptSlJ3dWV6MGJKak9mOHQvT2lPNGpKYVhWQjRaVEpSSlQzQThBM2hUWXNsNkZmL3pSRDNaR2FnOQpJcEh2U05QRS9jMzQrYkNHQXM2RXhKMjI2L01ZNDZvUStXQSt0c2trb2hrNk5hZTluUVlNK08wVEdpMlErTFFmClpCMCt1ZHBYNWU1WHc3Qkdkc0UrdTRRRlBCbm5NWkFwSXFKRnd4T1RNRmRQL3UyM3lVb3BJQjFuMkxVdFVFVDIKd01Fb2luNHQvaEkxQ2FmT1RYMWd3dS9OWk9WclVvWDNlektnVmJCL0VhZ2g5Zi9nWWw3SWI0SWVpc0hlR0JDSwp4dWUxZDg3cVc4MWk2dkdzTzJHb3haQTRVUFNlaTlBanFyNzRCNGJZZnVHdVJXWEJKZHg0RFZTWmJZNWVQcHV6CmwwRW1Zd0ZlZUI5MVNRY0VuSTF4NkdsZnlyeG9JaXdYUmlrT0p2Q0l2NmxLSzZFVWJTYldCek1XTFVuK0trRTUKUmlzNEdZUzk3YmlHNjRobHliM2p6M1NZZ2VGSlMrOTFKR0YvWXFEdXNIK2pBZlJaZjJPQjA1SU84dzVJS2N6YQpXZ0ZDVTdyZTgxTlgzcWJTcWhwdjFGWktEajJKa3YyODJIdTB1dkR0b2xiTDR6MnVqclNDN0czYy8vblBXcEpGCnpqNGhWTU9yVkFveVh3KzV2bFRVcmNLTFlHUjdycFNQMWdHZWRneUw0MUcyd25vNXNjQmx6Q0VXTDJCZm95MTgKb2NZbWJTOGtQV08wRHJHN2tzVklHblYwRVJKQ3hLMnEwR1h5ZDluanluazZ3WUVsRHZKZ0R1bE5kdm5yeHkxeQpFL3hoMmxNZExydUhndzFmbjFNTU1PZTRKWXJHTTVjeFRuOG9zSmlmL1ZmTmh6dlEyRnZvS3d6dS9IM0I2SUgyCnE5NU03Q0R0Y1hNUi8vLzg2Q0FuUmpRaThoeFhXS3k1Y3k3VDNHdVlKWTcyNWgyN3NMNUl5R2RtVS9aUUw2Y1AKMzR3WlJhL01EazBDQmlZNlBOOE9BK1A3UmxKaGpQRVJmWitVT0xFZ2Y4WFdQVW0rbmt4RlRtU0ZPc2JkVm1qUQphUmlZTi9aS1RNcHQ1ZFF0NWtUMzZyR0Vpa3RBMVB5WHIzMDkrVFhwV3ZYT3lRN2J6MVZKNkwxKzdxaC81c0dTCnY2K2VtelJ6S3BkQUJUNDEvaEtTazYyREI1UHFpY0wwaTBuUm9CZWZRbFd5MWI0WmZKQlVMaG01OTAzaG9rYVkKTDlrWnBXTFFVaGM2Nlk1M0k0NVVRTFU2Z3lnSmtqUUptMVJRRzJXNXpTeWNHcmd6L2wvZmc0WT0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KJkROUzosIElQIEFkZHJlc3M6MTkyLjE2OC4xMDAuMTIwLCBVUkk6CWxvY2FsaG9zdAIAAAAAAAAAAQAAAAIAAAAAAAAAFACjB9zEYlarVMvNzEruzLd6aQ250bQGAQAGsC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJRXN6Q0NBNXVnQXdJQkFnSVVXU2FGUVNmakRPa25KMnpjanlaYTZqUzByd2d3RFFZSktvWklodmNOQVFFTEJRQXdlekVMTUFrRw0KQTFVRUJoTUNXRmd4RWpBUUJnTlZCQWdNQ1ZOMFlYUmxUbUZ0WlRFUk1BOEdBMVVFQnd3SVEybDBlVTVoYldVeEZEQVNCZ05WQkFvTQ0KQzBOdmJYQmhibmxPWVcxbE1Sc3dHUVlEVlFRTERCSkRiMjF3WVc1NVUyVmpkR2x2Yms1aGJXVXhFakFRQmdOVkJBTU1DV3h2WTJGcw0KYUc5emREQWVGdzB5TmpBeU1qQXdOak0xTXpsYUZ3MHpOakF5TVRnd05qTTFNemxhTUhzeEN6QUpCZ05WQkFZVEFsaFlNUkl3RUFZRA0KVlFRSURBbFRkR0YwWlU1aGJXVXhFVEFQQmdOVkJBY01DRU5wZEhsT1lXMWxNUlF3RWdZRFZRUUtEQXREYjIxd1lXNTVUbUZ0WlRFYg0KTUJrR0ExVUVDd3dTUTI5dGNHRnVlVk5sWTNScGIyNU9ZVzFsTVJJd0VBWURWUVFEREFsc2IyTmhiR2h2YzNRd2dnRWlNQTBHQ1NxRw0KU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREY5QkkxL2NzVm4zeGFwOUNVdy80M2lRam1nVGozU05HZjNKd1V6Z25xYTducA0KU3lLbGxrOXpBNFRYRWgwTFVWblVWVmJtaEl0QUxZQzN6YjlnVkVWbitPUExMWjB1SXJrd2Zud2VxTmZ2VTFyY2FMRWpTaFQ0cUNOYQ0KbEhJeGtjWkYrSTNpZnB4aHE0aFF2UTlFNytyUTlUKy9adkVBaDJtYWwzcDhneUhzbjc1TG9DdlQzbEtkSGRLeWFSYThUdGlndk9mRQ0KdDAwdm9ScElzeXh6d2NKaEpxNVZtdkFGZC9oY3gyeWVzZDQwcng3Qk9kbDBHUGlvOGFKalZzaEdva3g2QllIL1NTTEZTOWFxb2xLSg0KdEdjREtOSkhSWTJDeUZ2YkVrbzliYklmR3FNcFFoWDA4ak42dDFVbU5kbU5EYldiekJRcllNcGM2bkJHbWI4WEViQXZBZ01CQUFHag0KZ2dFdE1JSUJLVEFKQmdOVkhSTUVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUM5REFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSQ0KS3dZQkJRVUhBd0l3RXdZRFZSMFJCQXd3Q29JQWh3VEFxR1I0aGdBd0hRWURWUjBPQkJZRUZBNmpta3Yvb09jWmc4RDdueXNjMUxwUQ0KdCtQOE1JRzRCZ05WSFNNRWdiQXdnYTJBRkE2am1rdi9vT2NaZzhEN255c2MxTHBRdCtQOG9YK2tmVEI3TVFzd0NRWURWUVFHRXdKWQ0KV0RFU01CQUdBMVVFQ0F3SlUzUmhkR1ZPWVcxbE1SRXdEd1lEVlFRSERBaERhWFI1VG1GdFpURVVNQklHQTFVRUNnd0xRMjl0Y0dGdQ0KZVU1aGJXVXhHekFaQmdOVkJBc01Fa052YlhCaGJubFRaV04wYVc5dVRtRnRaVEVTTUJBR0ExVUVBd3dKYkc5allXeG9iM04wZ2hSWg0KSm9WQkorTU02U2NuYk55UEpscnFOTFN2Q0RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQXZHQXVVc21NNW1GQXBhaDhHa0tHU2lrZg0KMUMxRnFpRTlicFBjbFoyN1BUZGNiUmxNRmZzRUlTSVpZSUNvbi9MVzQ5bTkvNkJsUkFSU2hZczU2cEVIeU1lckR5blNJSzh5aENobA0KZFZiOXYrTDQ0R3dSRmRWdHJFRWIxZjJTc2k2VS9udmw3cE5oTWRiTGE2M2N2Z1IydkF3bzFNSG5iNHZsQ1pYMjdncVVDWGFINVFSYw0KdWEzUzJscnB4M0JJa09udVAvcTMzZXpoWTJJOEtOYS9LSlRrNnEwcDlVNWwwTm1ha3dJdjNBM0J6a3g2TFBFRC9VMndmbDR2YnRiVQ0KeFl2SWZWcm50SnJOZ21nemV2VHJUOEZWZEdHY3JtbWdCR3lFblhObzN3TUp4MnVrb1hjZDlWMVhJRERqUGtJSVFGa0ZrSXhEME9sTg0KRG13WTVKS1U4T1E3K0E9PQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KFwgBAACzAQACAHwwejAUBgcqhkjOPQIBBgkrJAMDAggBAQsDYgAEU3fv8F1BCc4zU9ZhKFpy3SpYlBF7AHoeasBAfu/fBvRIatye8MMjOpEb5Be4V77dVqBwN1LtQ4FkPF+l2lWaSDXp/nxT69yOm8/4Vl+R3ccGZTZHYPlcSWV7MNLeIrIKqz+86lQhWoQ7VT2cJ2+/mwAgvMjC0xgo4OwtNGuEcGMH64XvgiLZdcq7Z9cFRiOoTX8HXi0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRk5UQmZCZ2txaGtpRzl3MEJCUTB3VWpBeEJna3Foa2lHOXcwQkJRd3dKQVFRbDJxZzl4cHdEdjJJZnRjcApqRnFsdUFJQ0NBQXdEQVlJS29aSWh2Y05BZ2tGQURBZEJnbGdoa2dCWlFNRUFTb0VFSjR3a2RPcXJQRjVnVFBICjZuTjBxdElFZ2dUUVhzOTlqN21LZkNpbmh5YXRiNE8vaFhkY0c2V1c4Z2xhT3BsSUI3ZUltSVpMa2dzb3N0R2IKLyt6eCtWeHZQaVBaNzV2TWFEKzFZdnlCSlVkVmY3VVN2OCt6QlhQUFVhdGlIU0dIS3BYbUVzYS9WL1FzeXFIVwpuK21PODBDSXlSY21NamVOejExMjliU1lMdUJZWEJSZ1k0TnM0ZXZzUnVjYlprYWhUT1dwMUpkZzd0ejE4ZzkxCjl0QkN4MW9rVWhRUXl2eC81M0F6TTZWeDJjZDBGZWxDYzY5TFNoejEvbU51QTVyUU10MlJVcHhhbTl3Q2JnUnkKVENDRnVaYlY5b3owUTVVWkJKeE8zSHlMZ0orczNYN2U4elpuOUxMN055M25FNE44bUxiZzJTODFaT1FnMThZMgpsem9nSEpDMGNNSkZnOUNoT0dndHg3YXEvREdFQXRhUFNlWmNuc3R0V2RmbDA5Zkx4YzNSanlaejdkMHhSQ1JaCjhzdlc4ZnNtM2FjM2xUcGNYS1ZTNnE5MzRrRURNMHJWY1dDbnd2QmhtZXAxamF0d05lQUhXV2Fwb3VzMzJkc3kKL0VmYThDVk8rdGNvQ2N6Um11OWMzMHR4REI2OHlGd2cza3I4cnJBWWIvQ2RRYm1uU1hNZSszcHZoakxNY1plNAo1VzRNRkU1M09VTzh4anlIeGo0NWVHaHJraVBhR25FYXpDc0JlaDdGL3V2WGRqWk5jZDRIK3dGRDdEQ3hJV2hWCk1DdklEeldJUXVRSU9yVmVTM1c4MWNKUThsZ054RnkwaHRSQXFsYklyUGQ2SEYrWDE4NGF3N1d1VmI0UUZGU0oKdWtMT3ovWEVCZXdxdXdlK1pTUnFUNjJ5VnhTck85QWdSU3pPMTJlL3IrdGVVQStPbVEwdEw3eXFhMWJGSmRBRwpNd0VTcHJmaUlpcTRjTW1lSHM1YUlEQXRIeFJENkgzT2JtL2p0cENrRXRXRDc2ZC9qTFFVWkxQL2JROG5EMlJyCjh3bVVHWUpZcXRQaCt0K1I1TXhhV2NzS0IvYlZxeFc1RXdwRWQzbHdFajJpS1YrWjdtcVdJVXdsaUtGQjdIRU0KdDdvK011RVpkdWpNT1pwMDZqZXBWQk5NYk5CZXhERnNzVldGZEZ5Mm1uM1ZrYlp6azRsM0d0MlhMZFlkeExaVgppRDZzV2hxUHJZWTdabkI2R0JnUW5qQko1Q3pRNDFWa0ZaL0lsQVhUTVVqSjVGdnVOQVdIZEV3b0tYa2VpOHRWCkRFMGdOVkNUNkpNeFZ3MVpneHRuOXlYSEliTUZycVBOeXpNWUNKZjFEVWVzT0xuVEFaZUQrRXhzUUhIcWJRNk8KeWlYMGpxZ1haU3ZWUWFxYVdkUDIwTndhelhFbkFxQitLdkl2VXB3NEdYVG5GMUFpUjdjK1Q4ejBSK2ZrRHpDVgpBbGZFeFhhY2lTSzBGeFd0UTFDRm9iak04Tk5NdUNJY0xXZTl4a3pISHBxUFJHQTRYNHdjVVlMeVlMdU0yYmFNClh5NFNzWStzdE1UVUpucHhYblBCcVFWM243RnhaaUg3RzExS0FvaFdvT1ZOWEhiRldjckFBblc3YWxlWDVWenUKL0N2RGlNVGNzbDBLTzJhQms5RVB0TnhVMHUvUGV4TmcyOFpxclBWNEQxV3VON296VFMxR3RSL3VRYW5zbDk2Zgp2ZkhxZ1dXajJOQUZQU3FzcS9WSXJ4VkdETFkzZENNN3U5V2MzMnY1MVpIOWx0NWxDSVhMT2hFcFpNS21NSGgrClZhWVpIWHJVYmtWV2JkNDJZQWpIbFN0d3U1RnhJc1RYN0xEZlZpYzU5TEI5MkZUVk5XOFk4RzZoQjVOcEdHelgKSWZWWXV2OFRoU3M5c2FBUzd0Ni9pVWZVbnZBbXYvdlNxaS9oODV0WVhBZkdwaDFMTXFlaHUxc0UwNllwVE5uWgpsS0Faa1J5SVRUMFFxZ3NuNVFORXM1ZmhIek9CRnVrdmZvK1lseHFxZ2lDeGNJMHlmeWY4OWNxK2dPWVF4a2NZCk8vUVpoeDJrSm5ZbEFCcWdmZWtlM2c1a1lzSDM5WWhQVVdDUi9jQm9UdXFGb3ZSTm0vS0RrQW1Ed2tnM3hRZEsKVy95dnJaNFlVUzM0QzBtOEU4dWljMnlXTFVyRHlIdG96Rms2YXRndnVGQUVMTVhERTloWmNPVT0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KJkROUzosIElQIEFkZHJlc3M6MTkyLjE2OC4xMDAuMTIwLCBVUkk6", + "UserData": "AgAAAAAAAAAAAAAAAAAAAAEAAAAFAGFkbWludAAAAAEAAAEBAAEFAAAnEAAAACCEI33tJj5whBNi9GUsR7wyBmW8SWjq1VoWjQzYNiMWdwAAAECGPvvuM6baYT1UqH47OW/9bXiFvdSNNlPeWpB8vD41yWkLe2VpVGCiSG8Pb3qh+3Maww/+QLLUYkr3g53Ig6WDAA==", + "CertificateAssignments": { + "TLS": 1, + "WebServer": 2 + }, + "AccessProtectionData": "AQAAAAAAAAAAAAAAAAAAAAABAABQAAAAAAEBAAAAAgDQBwAAIAB9RDcBdkxRpZzrdKhSV+FknSpB6kVFVGD3YR3+UXNCOiAAXrWxjQ5Ai6AXBZpvCqxzaJJELu1N9mHkPNWkXepAZ2pQAAAAAAEBAAAAAgDQBwAAIAB9RDcBdkxRpZzrdKhSV+FknSpB6kVFVGD3YR3+UXNCOiAAVhoOvMNLrkcB/tcKyrdfoP5U/MqYMHq6iFCjScCmzm5QAAAAAAEBAAAAAgDQBwAAIAB9RDcBdkxRpZzrdKhSV+FknSpB6kVFVGD3YR3+UXNCOiAAXrWxjQ5Ai6AXBZpvCqxzaJJELu1N9mHkPNWkXepAZ2pQAAAAAAEBAAAAAgDQBwAAIAB9RDcBdkxRpZzrdKhSV+FknSpB6kVFVGD3YR3+UXNCOiAAXrWxjQ5Ai6AXBZpvCqxzaJJELu1N9mHkPNWkXepAZ2ogAAAAfUQ3AXZMUaWc63SoUlfhZJ0qQepFRVRg92Ed/lFzQjo=" +} \ No newline at end of file From ee4422395c114558a572e68c14e166ad82fd0738 Mon Sep 17 00:00:00 2001 From: TK <61820360+TomKovac@users.noreply.github.com> Date: Fri, 20 Feb 2026 08:18:21 +0100 Subject: [PATCH 30/30] normalize line endings for hwc.gen files in copy_hardware_ids.sh, copy_io_addresses.sh, and hw_compile.sh --- src/scripts/copy_hardware_ids.sh | 2 +- src/scripts/copy_io_addresses.sh | 2 +- src/scripts/hw_compile.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/scripts/copy_hardware_ids.sh b/src/scripts/copy_hardware_ids.sh index 5c5694514..1b7f7a2bf 100644 --- a/src/scripts/copy_hardware_ids.sh +++ b/src/scripts/copy_hardware_ids.sh @@ -30,7 +30,7 @@ if ! [[ -d "./hwc" ]]; then exit 1 fi dos2unix SystemConstants/* -dos2unix -r hwc/hwc.gen/ +dos2unix -r hwc/hwc.gen/* input_file="SystemConstants/${PLC_NAME}_HwIdentifiers.st" output_dir="src/IO" output_file1="${output_dir}/HwIdentifiers.st" diff --git a/src/scripts/copy_io_addresses.sh b/src/scripts/copy_io_addresses.sh index 4f6884c36..27df436e5 100644 --- a/src/scripts/copy_io_addresses.sh +++ b/src/scripts/copy_io_addresses.sh @@ -30,7 +30,7 @@ if ! [[ -d "./hwc" ]]; then exit 1 fi dos2unix SystemConstants/* -dos2unix -r hwc/hwc.gen/ +dos2unix -r hwc/hwc.gen/* # ---- Paths ---- input_file="SystemConstants/${PLC_NAME}_IoAddresses.st" output_dir="src/IO" diff --git a/src/scripts/hw_compile.sh b/src/scripts/hw_compile.sh index 53c2e5267..c6af1db14 100644 --- a/src/scripts/hw_compile.sh +++ b/src/scripts/hw_compile.sh @@ -5,7 +5,7 @@ export NC='\033[0m\r\n' # No Color+CRLF hwcc=$(apax hwc compile -i ".\hwc" -o bin/hwc/) dos2unix SystemConstants/* dos2unix -r src/IO/* -dos2unix -r hwc/hwc.gen/ +dos2unix -r hwc/hwc.gen/* if [[ $? -eq 0 ]]; then printf "${GREEN}Hardware configuration compiled succesfully.${NC}" exit 0