From 2ed088e415dd1635a4e8b6d131918c765a0b26c8 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Thu, 21 Nov 2024 18:46:06 +0100 Subject: [PATCH 001/134] Fix ArangoDB --- .../org/micord/service/RequestService.java | 109 +++++++++--------- 1 file changed, 56 insertions(+), 53 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index aa43bee..d833998 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -145,9 +145,9 @@ public class RequestService { try (Connection connection = DatabaseConnection.getConnection( request.getSqlConnectionParams())) { String requestURL = (String) query.get("requestURL"); - executeSqlQuery(connection, requestURL); + executeSqlQuery(connection, requestURL); - List queryIds = (List) query.get("ids"); + List queryIds = (List) query.get("ids"); if (queryIds != null && !queryIds.isEmpty()) { ids.addAll(queryIds); } else { @@ -163,64 +163,64 @@ public class RequestService { } } -private Map buildSqlQuery(SqlRequest request, List ids) { - logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); - long startExecTime = System.currentTimeMillis(); - Map resultMap = new HashMap<>(); - String endpointArguments; + private Map buildSqlQuery(SqlRequest request, List ids) { + logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); + long startExecTime = System.currentTimeMillis(); + Map resultMap = new HashMap<>(); + String endpointArguments; - String requestURL = request.getRequestURL(); + String requestURL = request.getRequestURL(); - if (requestURL.contains(":=")) { - endpointArguments = "'{" + ids.stream() - .map(String::trim) - .collect(Collectors.joining(", ")) + "}'"; - } else { - endpointArguments = "(" + ids.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; - } + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } - if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { - for (RequestArgument argument : request.getRequestArguments()) { + if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { + for (RequestArgument argument : request.getRequestArguments()) { - if (argument.getRequestArgumentConnectionParams() != null) { - logger.debug("Opening connection for SQL RequestArgument: {}", argument.getRequestArgumentName()); - try (Connection connection = DatabaseConnection.getConnection( - argument.getRequestArgumentConnectionParams())) { - String query = argument.getRequestArgumentURL(); - List result = fetchFileListFromDatabaseSQL(connection, query); + if (argument.getRequestArgumentConnectionParams() != null) { + logger.debug("Opening connection for SQL RequestArgument: {}", argument.getRequestArgumentName()); + try (Connection connection = DatabaseConnection.getConnection( + argument.getRequestArgumentConnectionParams())) { + String query = argument.getRequestArgumentURL(); + List result = fetchFileListFromDatabaseSQL(connection, query); - resultMap.put("ids", result); + resultMap.put("ids", result); - if (result != null && !result.isEmpty()) { - String resultSet = "(" + result.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; + if (result != null && !result.isEmpty()) { + String resultSet = "(" + result.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; - requestURL = requestURL.replace("${" + argument.getRequestArgumentName() + "}", resultSet); + requestURL = requestURL.replace("${" + argument.getRequestArgumentName() + "}", resultSet); + + } } - - } - catch (SQLException e) { - logger.error("Failed to execute query for RequestArgument", e); + catch (SQLException e) { + logger.error("Failed to execute query for RequestArgument", e); + } } } } + + resultMap.put("requestURL", requestURL + .replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()) + .replace("${endpointArguments}", endpointArguments)); + + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL query built in {} ms", endExecTime - startExecTime); + + return resultMap; } - resultMap.put("requestURL", requestURL - .replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()) - .replace("${endpointArguments}", endpointArguments)); - - long endExecTime = System.currentTimeMillis(); - logger.debug("SQL query built in {} ms", endExecTime - startExecTime); - - return resultMap; -} - private boolean executeSqlQuery(Connection connection, String query) throws SQLException { try (PreparedStatement stmt = connection.prepareStatement(query)) { @@ -282,9 +282,9 @@ private Map buildSqlQuery(SqlRequest request, List ids) } private Map executeSelectAqlRequest(ArangoDatabase arangoDb, - String aqlCollectionWrite, - RequestArgument requestArgument, - List ids, String transactionId) { + String aqlCollectionWrite, + RequestArgument requestArgument, + List ids, String transactionId) { Map entities = new HashMap<>(); String url = requestArgument.getRequestArgumentURL(); @@ -338,14 +338,17 @@ private Map buildSqlQuery(SqlRequest request, List ids) Map bindVars = new HashMap<>(); // TODO: verify correctness of received entities and compare keys - Object writeEntity = entities.get(aqlCollectionWrite); - bindVars.put("ids", entities); + Object ids = entities.get(aqlCollectionWrite); + bindVars.put("ids", ids); AqlQueryOptions aqlQueryOptions = new AqlQueryOptions().streamTransactionId(transactionId); - arangoDb.query(requestURL, null, bindVars, aqlQueryOptions); - - logger.info("Successfully removed {}: {}", aqlCollectionWrite, writeEntity); + try { + arangoDb.query(requestURL, null, bindVars, aqlQueryOptions); + logger.info("Successfully removed {} for ids: {}", aqlCollectionWrite, ids); + } catch (Exception e) { + logger.error("Failed to execute AQL request: {}", e.getMessage(), e); + } } } From 2a659eaf96372fbedda76192cceaf0adadd1af84 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Fri, 22 Nov 2024 16:21:09 +0100 Subject: [PATCH 002/134] Fix ArangoDB calls --- .../java/org/micord/models/AqlRequest.java | 16 ---- .../micord/models/AqlRequestCollection.java | 9 +-- .../org/micord/service/RequestService.java | 79 +++++++++++-------- 3 files changed, 48 insertions(+), 56 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/models/AqlRequest.java b/config-data-executor/src/main/java/org/micord/models/AqlRequest.java index ba26178..4df9ddb 100644 --- a/config-data-executor/src/main/java/org/micord/models/AqlRequest.java +++ b/config-data-executor/src/main/java/org/micord/models/AqlRequest.java @@ -5,11 +5,7 @@ import lombok.Setter; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlElementWrapper; import java.util.List; -import java.util.stream.Collectors; -/** - * @author Maksim Tereshin - */ @Setter public class AqlRequest extends BaseRequest { @@ -27,16 +23,4 @@ public class AqlRequest extends BaseRequest { return aqlRequestCollections; } - public List getReadCollections() { - return aqlRequestCollections.stream() - .filter(collection -> collection.getType() != null && collection.getType().contains("read")) - .collect(Collectors.toList()); - } - - public List getWriteCollections() { - return aqlRequestCollections.stream() - .filter(collection -> collection.getType() != null && collection.getType().contains("write")) - .collect(Collectors.toList()); - } - } diff --git a/config-data-executor/src/main/java/org/micord/models/AqlRequestCollection.java b/config-data-executor/src/main/java/org/micord/models/AqlRequestCollection.java index 54e905f..b6f287e 100644 --- a/config-data-executor/src/main/java/org/micord/models/AqlRequestCollection.java +++ b/config-data-executor/src/main/java/org/micord/models/AqlRequestCollection.java @@ -5,14 +5,11 @@ import lombok.Setter; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlValue; -/** - * @author Maksim Tereshin - */ @Setter public class AqlRequestCollection { private String type; - private String collectionName; + private String collectionUrl; @XmlAttribute(name = "type") public String getType() { @@ -20,8 +17,8 @@ public class AqlRequestCollection { } @XmlValue - public String getCollectionName() { - return collectionName; + public String getCollectionUrl() { + return collectionUrl; } } diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index d833998..b1eba8f 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -245,26 +245,43 @@ public class RequestService { // TODO: implement for multiple request arguments RequestArgument requestArgument = request.getRequestArguments().get(0); - List aqlCollectionRead = request.getReadCollections().stream() - .map(AqlRequestCollection::getCollectionName) - .toList(); - String aqlCollectionWrite = request.getWriteCollections().stream() - .map(AqlRequestCollection::getCollectionName) - .findFirst().orElseGet(null); + List collectionTypes = new ArrayList<>(); + + request.getAqlRequestCollections().forEach(collection -> { + collectionTypes.add(collection.getType()); + }); StreamTransactionEntity tx = null; try { StreamTransactionOptions options = new StreamTransactionOptions() - .writeCollections(aqlCollectionWrite) - .readCollections(aqlCollectionRead.toArray(new String[0])); + .writeCollections(collectionTypes.toArray(new String[0])) + .readCollections(collectionTypes.toArray(new String[0])); tx = arangoDb.beginStreamTransaction(options); String transactionId = tx.getId(); logger.info("Stream transaction started with ID: {}", transactionId); - Map entities = executeSelectAqlRequest(arangoDb, aqlCollectionWrite, requestArgument, ids, transactionId); - executeMainAqlRequest(arangoDb, aqlCollectionWrite, request.getRequestURL(), entities, transactionId); + Map entities = executeSelectAqlRequest(arangoDb, requestArgument, ids, transactionId); + + if (entities.isEmpty()) { + logger.warn("No entities found for main AQL request."); + return; + } + + request.getAqlRequestCollections().forEach(collection -> { + String type = collection.getType(); + String entityType; + + if (Objects.equals(type, "applications")) { + entityType = "applicationId"; + } else { + entityType = type + "Id"; + } + + Object entityIds = entities.get(entityType); + executeMainAqlRequest(arangoDb, entityIds, collection.getCollectionUrl(), type, transactionId); + }); arangoDb.commitStreamTransaction(transactionId); logger.info("Stream transaction with ID {} committed successfully", transactionId); @@ -282,7 +299,6 @@ public class RequestService { } private Map executeSelectAqlRequest(ArangoDatabase arangoDb, - String aqlCollectionWrite, RequestArgument requestArgument, List ids, String transactionId) { Map entities = new HashMap<>(); @@ -311,41 +327,36 @@ public class RequestService { catch (Exception e) { logger.error("Failed to execute AQL url", e); } - } else if (type == RequestArgumentType.SQL) { - if (requestArgument.getRequestArgumentConnectionParams() != null) { - try (Connection connection = DatabaseConnection.getConnection( - requestArgument.getRequestArgumentConnectionParams())) { - String query = requestArgument.getRequestArgumentURL(); - List result = fetchFileListFromDatabaseSQL(connection, query); - - entities.put(aqlCollectionWrite, result); - } - catch (SQLException e) { - logger.error("Failed to execute query for RequestArgument", e); - } - } } +// else if (type == RequestArgumentType.SQL) { +// if (requestArgument.getRequestArgumentConnectionParams() != null) { +// try (Connection connection = DatabaseConnection.getConnection( +// requestArgument.getRequestArgumentConnectionParams())) { +// String query = requestArgument.getRequestArgumentURL(); +// List result = fetchFileListFromDatabaseSQL(connection, query); +// +// entities.put(aqlCollectionWrite, result); +// } +// catch (SQLException e) { +// logger.error("Failed to execute query for RequestArgument", e); +// } +// } +// } return entities; } - private void executeMainAqlRequest(ArangoDatabase arangoDb, String aqlCollectionWrite, String requestURL, - Map entities, String transactionId) { - if (entities == null || entities.isEmpty()) { - logger.warn("No entities found for main AQL request."); - return; - } + private void executeMainAqlRequest(ArangoDatabase arangoDb, Object entityIds, String requestURL, String type, String transactionId) { + Map bindVars = new HashMap<>(); - // TODO: verify correctness of received entities and compare keys - Object ids = entities.get(aqlCollectionWrite); - bindVars.put("ids", ids); + bindVars.put("ids", entityIds); AqlQueryOptions aqlQueryOptions = new AqlQueryOptions().streamTransactionId(transactionId); try { arangoDb.query(requestURL, null, bindVars, aqlQueryOptions); - logger.info("Successfully removed {} for ids: {}", aqlCollectionWrite, ids); + logger.info("Successfully removed {} for ids: {}", type, entityIds); } catch (Exception e) { logger.error("Failed to execute AQL request: {}", e.getMessage(), e); } From 771157abb167b7580beb46e544b9cf92715b7805 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Sat, 23 Nov 2024 10:17:04 +0100 Subject: [PATCH 003/134] Fix ArangoDB calls --- .../src/main/java/org/micord/service/RequestService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index b1eba8f..cf3d06f 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -280,6 +280,11 @@ public class RequestService { } Object entityIds = entities.get(entityType); + + if (entityIds instanceof String) { + entityIds = Collections.singletonList((String) entityIds); + } + executeMainAqlRequest(arangoDb, entityIds, collection.getCollectionUrl(), type, transactionId); }); From adf30c5bf84c224047c6d05fe188173e6b6f7b09 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Sun, 24 Nov 2024 14:43:54 +0100 Subject: [PATCH 004/134] Fix S3 calls --- .../org/micord/service/RequestService.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index cf3d06f..2a21001 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -42,24 +42,21 @@ public class RequestService { public void processS3Requests(List s3Requests, List ids) { logger.debug("Starting processing of S3 requests"); - if (s3Requests != null) { - s3Requests.forEach(request -> { - List> futures = ids.stream() - .map(id -> CompletableFuture.runAsync(() -> processS3Request(request, id))) - .toList(); + if (s3Requests != null && !s3Requests.isEmpty()) { + List> requestFutures = s3Requests.stream() + .map(request -> CompletableFuture.runAsync(() -> processS3Request(request, ids))) + .toList(); - CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])) - .thenRun(() -> logger.info("Successfully processed all S3 requests.")) - .exceptionally(ex -> { - logger.error("Failed to process S3 requests", ex); - return null; - }); - }); + CompletableFuture.allOf(requestFutures.toArray(new CompletableFuture[0])) + .thenRun(() -> logger.info("Successfully processed all S3 requests.")) + .exceptionally(ex -> { + logger.error("Failed to process S3 requests", ex); + return null; + }); } } - private void processS3Request(S3Request request, String id) { - logger.debug("Starting processing of S3 request for id: {}", id); + private void processS3Request(S3Request request, List ids) { try { List files = new ArrayList<>(); @@ -67,10 +64,11 @@ public class RequestService { for (RequestArgument argument : request.getRequestArguments()) { try (Connection connection = DatabaseConnection.getConnection( argument.getRequestArgumentConnectionParams())) { - String query = argument.getRequestArgumentURL(); + Map query = buildSqlQuery(request, ids); logger.debug("Starting fetching paths from database for S3 request"); long startExecTime = System.currentTimeMillis(); - List result = fetchFileListFromDatabaseSQL(connection, query); + + List result = fetchFileListFromDatabaseSQL(connection, (String) query.get("requestURL")); if (result != null && !result.isEmpty()) { files.addAll(result); } @@ -100,23 +98,23 @@ public class RequestService { .thenAccept(response -> { if (response.statusCode() == HttpURLConnection.HTTP_NO_CONTENT || response.statusCode() == HttpURLConnection.HTTP_OK) { - logger.info("Successfully deleted object for ID {}", id); + logger.info("Successfully deleted object {}", file); } else { - logger.error("Failed to delete object for ID {}. Response code: {}", id, + logger.error("Failed to delete object {}. Response code: {}", file, response.statusCode() ); } }) .exceptionally(ex -> { - logger.error("Failed to delete object for ID {}", id, ex); + logger.error("Failed to delete object {}", file, ex); return null; }); }); } catch (Exception e) { - logger.error("Failed to process S3 request for id: {}", id, e); + logger.error("Failed to process S3 request: {}", request, e); } } @@ -163,7 +161,7 @@ public class RequestService { } } - private Map buildSqlQuery(SqlRequest request, List ids) { + private Map buildSqlQuery(BaseRequest request, List ids) { logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); long startExecTime = System.currentTimeMillis(); Map resultMap = new HashMap<>(); @@ -212,7 +210,6 @@ public class RequestService { } resultMap.put("requestURL", requestURL - .replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()) .replace("${endpointArguments}", endpointArguments)); long endExecTime = System.currentTimeMillis(); From 7ceed04db1f5b313c71a2e97f3adb516a39b6247 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 26 Nov 2024 13:02:12 +0100 Subject: [PATCH 005/134] Add success messages, modify s3 handler, update csv generator --- .../org/micord/controller/ApiController.java | 8 ++-- .../org/micord/service/DownloadService.java | 38 ++++++++++++++++--- .../org/micord/service/RequestService.java | 28 +++++++++++++- 3 files changed, 63 insertions(+), 11 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index e5b29b5..7c1ee0c 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -35,7 +35,7 @@ public class ApiController { logger.debug("Starting block process for ids: {}", ids); apiService.process("block", ids); logger.debug("Finished block process for ids: {}", ids); - return ResponseEntity.ok(""); + return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); } @PostMapping("/unblock") @@ -43,7 +43,7 @@ public class ApiController { logger.debug("Starting unblock process for ids: {}", ids); apiService.process("unblock", ids); logger.debug("Finished unblock process for ids: {}", ids); - return ResponseEntity.ok(""); + return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); } @PostMapping("/removeFromSystem") @@ -52,7 +52,7 @@ public class ApiController { logger.debug("Starting removeFromSystem process for ids: {}", ids); apiService.process("removeFromSystem", ids); logger.debug("Finished removeFromSystem process for ids: {}", ids); - return ResponseEntity.ok(""); + return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); } @PostMapping("/removeFromCallList") @@ -61,7 +61,7 @@ public class ApiController { logger.debug("Starting removeFromCallList process for ids: {}", ids); apiService.process("removeFromCallList", ids); logger.debug("Finished removeFromCallList process for ids: {}", ids); - return ResponseEntity.ok(""); + return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); } @PostMapping("/downloadCSV") diff --git a/config-data-executor/src/main/java/org/micord/service/DownloadService.java b/config-data-executor/src/main/java/org/micord/service/DownloadService.java index f1f0ace..d70ede4 100644 --- a/config-data-executor/src/main/java/org/micord/service/DownloadService.java +++ b/config-data-executor/src/main/java/org/micord/service/DownloadService.java @@ -7,9 +7,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; +import java.io.*; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -41,14 +40,19 @@ public class DownloadService { File csvFile = File.createTempFile("download-", ".csv"); - try (PrintWriter writer = new PrintWriter(csvFile)) { + try (PrintWriter writer = new PrintWriter( + new OutputStreamWriter(new FileOutputStream(csvFile), StandardCharsets.UTF_8))) { + String lineSeparator = "\r\n"; + for (String[] row : results) { - writer.println(String.join(",", row)); + writer.print(formatCsvRow(row)); + writer.print(lineSeparator); } } catch (IOException e) { logger.error("Failed to write to CSV file", e); } + return csvFile; } @@ -58,6 +62,29 @@ public class DownloadService { return null; } + private String formatCsvRow(String[] row) { + StringBuilder formattedRow = new StringBuilder(); + + for (int i = 0; i < row.length; i++) { + if (i > 0) { + formattedRow.append(","); + } + + formattedRow.append("\""); + formattedRow.append(escapeCsvField(row[i])); + formattedRow.append("\""); + } + + return formattedRow.toString(); + } + + private String escapeCsvField(String field) { + if (field == null) { + return ""; + } + return field.replace("\"", "\"\""); + } + private Map buildSqlQuery(DownloadRequest request, List ids, LocalDate startDate, LocalDate endDate) { Map resultMap = new HashMap<>(); String endpointArguments; @@ -105,7 +132,6 @@ public class DownloadService { } catch (SQLException e) { logger.error("Failed to execute query for RequestArgument", e); - throw new RuntimeException("Error executing database query: " + argument.getRequestArgumentURL(), e); } } } diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 2a21001..f157fc3 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -64,7 +64,8 @@ public class RequestService { for (RequestArgument argument : request.getRequestArguments()) { try (Connection connection = DatabaseConnection.getConnection( argument.getRequestArgumentConnectionParams())) { - Map query = buildSqlQuery(request, ids); + + Map query = buildSqlQueryForS3(request.getRequestURL(), ids); logger.debug("Starting fetching paths from database for S3 request"); long startExecTime = System.currentTimeMillis(); @@ -161,6 +162,31 @@ public class RequestService { } } + private Map buildSqlQueryForS3(String requestURL, List ids) { + logger.debug("Starting building SQL query for request: {}", requestURL); + long startExecTime = System.currentTimeMillis(); + Map resultMap = new HashMap<>(); + String endpointArguments; + + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } + + resultMap.put("requestURL", requestURL + .replace("${endpointArguments}", endpointArguments)); + + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL query for S3 built in {} ms", endExecTime - startExecTime); + + return resultMap; + } + private Map buildSqlQuery(BaseRequest request, List ids) { logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); long startExecTime = System.currentTimeMillis(); From 2c390fc5d80ef6a797195179bed935d951a29278 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Tue, 26 Nov 2024 18:11:50 +0300 Subject: [PATCH 006/134] SUPPORT-8746 small fix --- .../java/rpc/ConfigExecutorRpcService.java | 23 ++++++++++--------- .../java/service/ConfigExecutorService.java | 7 +++--- frontend/src/ts/ervu/ConfigExecuteBtn.ts | 7 ++++-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/backend/src/main/java/rpc/ConfigExecutorRpcService.java b/backend/src/main/java/rpc/ConfigExecutorRpcService.java index ff169b4..ad8ba1c 100644 --- a/backend/src/main/java/rpc/ConfigExecutorRpcService.java +++ b/backend/src/main/java/rpc/ConfigExecutorRpcService.java @@ -1,12 +1,13 @@ package rpc; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; +import service.ConfigExecutorService; + import ru.cg.webbpm.modules.webkit.annotations.RpcCall; import ru.cg.webbpm.modules.webkit.annotations.RpcService; import ru.cg.webbpm.modules.webkit.beans.Behavior; -import service.ConfigExecutorService; - -import java.util.List; /** * @author Evgenii Malkov @@ -14,14 +15,14 @@ import java.util.List; @RpcService public class ConfigExecutorRpcService extends Behavior { - private final ConfigExecutorService configExecutorService; + private final ConfigExecutorService configExecutorService; - public ConfigExecutorRpcService(@Autowired ConfigExecutorService configExecutorService) { - this.configExecutorService = configExecutorService; - } + public ConfigExecutorRpcService(@Autowired ConfigExecutorService configExecutorService) { + this.configExecutorService = configExecutorService; + } - @RpcCall - public void callConfigExecutor(String methodPath, List ids) { - configExecutorService.call(methodPath, ids); - } + @RpcCall + public String callConfigExecutor(String methodPath, List ids) { + return configExecutorService.call(methodPath, ids); + } } diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index a2fee0d..f5f51c7 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -57,7 +57,7 @@ public class ConfigExecutorService { return fileModel; } - public void call(String methodPath, List ids) { + public String call(String methodPath, List ids) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity> entity = new HttpEntity<>(ids, headers); @@ -65,12 +65,13 @@ public class ConfigExecutorService { ids ); try { - ResponseEntity response = restTemplate.exchange(url.concat(methodPath), - HttpMethod.POST, entity, Object.class + ResponseEntity response = restTemplate.exchange(url.concat(methodPath), + HttpMethod.POST, entity, String.class ); LOGGER.info("Method: {}, executed with status: {}, for ids:{}", methodPath, response.getStatusCode().value(), ids ); + return response.getBody(); } catch (Exception e) { throw new RuntimeException( diff --git a/frontend/src/ts/ervu/ConfigExecuteBtn.ts b/frontend/src/ts/ervu/ConfigExecuteBtn.ts index c547602..a1cc1b1 100644 --- a/frontend/src/ts/ervu/ConfigExecuteBtn.ts +++ b/frontend/src/ts/ervu/ConfigExecuteBtn.ts @@ -1,5 +1,5 @@ import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core"; -import {AbstractButton, NotNull, ObjectRef, TextArea} from "@webbpm/base-package"; +import {AbstractButton, MessagesService, NotNull, ObjectRef, TextArea} from "@webbpm/base-package"; import {ConfigExecutorRpcService} from "../generated/rpc/ConfigExecutorRpcService"; /** @@ -19,6 +19,7 @@ export class ConfigExecuteBtn extends AbstractButton { @NotNull() public methodPath: string; private script: ConfigExecutorRpcService; + private messagesService: MessagesService; constructor(el: ElementRef, cd: ChangeDetectorRef) { super(el, cd); @@ -26,7 +27,8 @@ export class ConfigExecuteBtn extends AbstractButton { initialize() { super.initialize(); - this.script = this.getScript(ConfigExecutorRpcService) + this.script = this.getScript(ConfigExecutorRpcService); + this.messagesService = this.getScript(MessagesService); } doClickActions(): Promise { @@ -37,6 +39,7 @@ export class ConfigExecuteBtn extends AbstractButton { .map(id => id.trim().replace(/"/g, '')); return this.script.callConfigExecutor(this.methodPath, ids, true) + .then(successMsg => this.messagesService.success(successMsg)) .catch(error => Promise.reject(error)); } } From cb61d78069ba93bc5a918f0c3ff501eba7b31d41 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Tue, 26 Nov 2024 19:21:21 +0300 Subject: [PATCH 007/134] SUPPORT-8746 small fix --- frontend/src/ts/ervu/ConfigExecuteBtn.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/ts/ervu/ConfigExecuteBtn.ts b/frontend/src/ts/ervu/ConfigExecuteBtn.ts index a1cc1b1..9c0f0b6 100644 --- a/frontend/src/ts/ervu/ConfigExecuteBtn.ts +++ b/frontend/src/ts/ervu/ConfigExecuteBtn.ts @@ -28,7 +28,7 @@ export class ConfigExecuteBtn extends AbstractButton { initialize() { super.initialize(); this.script = this.getScript(ConfigExecutorRpcService); - this.messagesService = this.getScript(MessagesService); + this.messagesService = this.injector.get(MessagesService); } doClickActions(): Promise { From 8a7422286d3fd8da44f28838820f1bd92530b900 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 27 Nov 2024 08:20:13 +0100 Subject: [PATCH 008/134] Fix s3 --- .../java/org/micord/service/RequestService.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index f157fc3..72d23b7 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -49,9 +49,12 @@ public class RequestService { CompletableFuture.allOf(requestFutures.toArray(new CompletableFuture[0])) .thenRun(() -> logger.info("Successfully processed all S3 requests.")) - .exceptionally(ex -> { - logger.error("Failed to process S3 requests", ex); - return null; + .whenComplete((result, ex) -> { + if (ex != null) { + logger.error("Error processing S3 requests", ex); + } else { + logger.info("Successfully processed all S3 requests."); + } }); } } @@ -65,7 +68,7 @@ public class RequestService { try (Connection connection = DatabaseConnection.getConnection( argument.getRequestArgumentConnectionParams())) { - Map query = buildSqlQueryForS3(request.getRequestURL(), ids); + Map query = buildSqlQueryForS3(argument.getRequestArgumentURL(), ids); logger.debug("Starting fetching paths from database for S3 request"); long startExecTime = System.currentTimeMillis(); @@ -86,6 +89,11 @@ public class RequestService { HttpRequest httpRequest; logger.debug("Starting building HTTP request for S3 request"); long startExecTime = System.currentTimeMillis(); + + if (file == null || file.isBlank()) { + logger.warn("Skipping invalid file path: {}", file); + return; + } try { httpRequest = S3HttpConnection.buildHttpRequest(request, file); } From faeb4ca03cb3b893b7d68bd32d4b611d732bf48d Mon Sep 17 00:00:00 2001 From: kochetkov Date: Wed, 27 Nov 2024 10:59:57 +0300 Subject: [PATCH 009/134] small fix --- frontend/src/ts/modules/webbpm/component/webbpm.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/ts/modules/webbpm/component/webbpm.component.ts b/frontend/src/ts/modules/webbpm/component/webbpm.component.ts index df6a67a..6e5efa3 100644 --- a/frontend/src/ts/modules/webbpm/component/webbpm.component.ts +++ b/frontend/src/ts/modules/webbpm/component/webbpm.component.ts @@ -16,7 +16,7 @@ import {ProgressIndicationService} from "@webbpm/base-package"; }) export class WebbpmComponent { public headerVisible: boolean = true; - public footerVisible: boolean = true; + public footerVisible: boolean = false; constructor(private router: Router, private progressIndicationService: ProgressIndicationService) { From 1bb9a51e739b1a2a98edce6f5d1b700e597bc144 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Fri, 29 Nov 2024 14:04:51 +0100 Subject: [PATCH 010/134] Add exceptions, add validator service --- .../org/micord/config/ArangoDBConnection.java | 2 +- .../org/micord/config/AtomikosConfig.java | 25 ++-- .../org/micord/config/DatabaseConnection.java | 2 +- .../org/micord/config/S3HttpConnection.java | 4 +- .../org/micord/controller/ApiController.java | 120 +++++++++++++----- .../java/org/micord/enums/ConfigType.java | 21 +++ .../exceptions/ValidationException.java | 17 +++ .../java/org/micord/models/CachedConfig.java | 17 +-- .../models/requests/AqlConnectionParams.java | 49 +++++++ .../micord/models/requests/AqlRequest.java | 26 ++++ .../models/requests/AqlRequestCollection.java | 23 ++++ .../micord/models/requests/BaseRequest.java | 29 +++++ .../models/requests/DownloadCSVRequest.java | 16 +++ .../models/requests/DownloadRequest.java | 23 ++++ .../org/micord/models/requests/Request.java | 29 +++++ .../models/requests/RequestArgument.java | 41 ++++++ .../org/micord/models/requests/Requests.java | 41 ++++++ .../models/requests/S3ConnectionParams.java | 55 ++++++++ .../org/micord/models/requests/S3Request.java | 19 +++ .../models/requests/SqlConnectionParams.java | 65 ++++++++++ .../micord/models/requests/SqlRequest.java | 19 +++ .../models/validations/ValidationRule.java | 39 ++++++ .../models/validations/ValidationRules.java | 21 +++ .../java/org/micord/service/ApiService.java | 37 +++--- .../org/micord/service/ConfigService.java | 33 +++++ .../org/micord/service/DownloadService.java | 4 +- .../org/micord/service/RequestService.java | 55 ++++---- .../org/micord/service/ValidationService.java | 101 +++++++++++++++ .../java/org/micord/utils/ConfigLoader.java | 32 +++-- 29 files changed, 844 insertions(+), 121 deletions(-) create mode 100644 config-data-executor/src/main/java/org/micord/enums/ConfigType.java create mode 100644 config-data-executor/src/main/java/org/micord/exceptions/ValidationException.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/AqlConnectionParams.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/AqlRequest.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/AqlRequestCollection.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/BaseRequest.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/DownloadRequest.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/Request.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/RequestArgument.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/Requests.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/S3Request.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/SqlConnectionParams.java create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/SqlRequest.java create mode 100644 config-data-executor/src/main/java/org/micord/models/validations/ValidationRule.java create mode 100644 config-data-executor/src/main/java/org/micord/models/validations/ValidationRules.java create mode 100644 config-data-executor/src/main/java/org/micord/service/ConfigService.java create mode 100644 config-data-executor/src/main/java/org/micord/service/ValidationService.java diff --git a/config-data-executor/src/main/java/org/micord/config/ArangoDBConnection.java b/config-data-executor/src/main/java/org/micord/config/ArangoDBConnection.java index 266f816..a298010 100644 --- a/config-data-executor/src/main/java/org/micord/config/ArangoDBConnection.java +++ b/config-data-executor/src/main/java/org/micord/config/ArangoDBConnection.java @@ -3,7 +3,7 @@ package org.micord.config; import com.arangodb.ArangoDB; import com.arangodb.ArangoDBException; import com.arangodb.ArangoDatabase; -import org.micord.models.AqlConnectionParams; +import org.micord.models.requests.AqlConnectionParams; /** * @author Maksim Tereshin diff --git a/config-data-executor/src/main/java/org/micord/config/AtomikosConfig.java b/config-data-executor/src/main/java/org/micord/config/AtomikosConfig.java index 1cc4563..c4fba3b 100644 --- a/config-data-executor/src/main/java/org/micord/config/AtomikosConfig.java +++ b/config-data-executor/src/main/java/org/micord/config/AtomikosConfig.java @@ -1,38 +1,29 @@ package org.micord.config; -import com.atomikos.icatch.jta.UserTransactionImp; import com.atomikos.icatch.jta.UserTransactionManager; -import javax.transaction.TransactionManager; -import javax.transaction.UserTransaction; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.jta.JtaTransactionManager; -/** - * @author Maksim Tereshin - */ + @Configuration @EnableTransactionManagement public class AtomikosConfig { - @Bean - public UserTransaction userTransaction() throws Throwable { - UserTransactionImp userTransactionImp = new UserTransactionImp(); - userTransactionImp.setTransactionTimeout(300); - return userTransactionImp; - } - - @Bean - public TransactionManager atomikosTransactionManager() { + @Bean(initMethod = "init", destroyMethod = "close") + public UserTransactionManager userTransactionManager() { UserTransactionManager userTransactionManager = new UserTransactionManager(); userTransactionManager.setForceShutdown(true); return userTransactionManager; } @Bean - public JtaTransactionManager transactionManager() throws Throwable { - return new JtaTransactionManager(userTransaction(), atomikosTransactionManager()); + public JtaTransactionManager transactionManager() { + JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(); + jtaTransactionManager.setTransactionManager(userTransactionManager()); + jtaTransactionManager.setUserTransaction(userTransactionManager()); + return jtaTransactionManager; } } diff --git a/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java b/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java index aabcf2b..41ec81e 100644 --- a/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java +++ b/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java @@ -1,7 +1,7 @@ package org.micord.config; import com.atomikos.jdbc.AtomikosDataSourceBean; -import org.micord.models.SqlConnectionParams; +import org.micord.models.requests.SqlConnectionParams; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java b/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java index 668332d..616f698 100644 --- a/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java +++ b/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java @@ -1,7 +1,7 @@ package org.micord.config; -import org.micord.models.S3ConnectionParams; -import org.micord.models.S3Request; +import org.micord.models.requests.S3ConnectionParams; +import org.micord.models.requests.S3Request; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 7c1ee0c..294f4f8 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -1,23 +1,28 @@ package org.micord.controller; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.List; - -import org.micord.models.DownloadCSVRequest; +import org.micord.enums.ConfigType; +import org.micord.exceptions.ValidationException; +import org.micord.models.requests.DownloadCSVRequest; import org.micord.service.ApiService; +import org.micord.service.ValidationService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; +import java.util.Map; + /** * REST Controller for API operations. */ @@ -30,38 +35,91 @@ public class ApiController { @Autowired private ApiService apiService; + @Autowired + private ValidationService validationService; + @PostMapping("/block") - public ResponseEntity block(@RequestBody List ids) throws FileNotFoundException { - logger.debug("Starting block process for ids: {}", ids); - apiService.process("block", ids); - logger.debug("Finished block process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); + public ResponseEntity block(@RequestBody List ids) { + try { + validationService.validateAll(ids); + + logger.debug("Starting block process for ids: {}", ids); + apiService.process(ConfigType.BLOCK, ids); + logger.debug("Finished block process for ids: {}", ids); + return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); + } catch (ValidationException e) { + logger.error("Validation failed for IDs: {}", ids, e); + return ResponseEntity.badRequest().body(Map.of( + "message", "Validation error occurred", + "details", e.getValidationDetails() + )); + } catch (Exception e) { + logger.error("Unexpected error during processing: {}", e.getMessage(), e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); + } } @PostMapping("/unblock") - public ResponseEntity unblock(@RequestBody List ids) throws FileNotFoundException { - logger.debug("Starting unblock process for ids: {}", ids); - apiService.process("unblock", ids); - logger.debug("Finished unblock process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); + public ResponseEntity unblock(@RequestBody List ids) { + try { + validationService.validateAll(ids); + + logger.debug("Starting unblock process for ids: {}", ids); + apiService.process(ConfigType.UNBLOCK, ids); + logger.debug("Finished unblock process for ids: {}", ids); + return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); + } catch (ValidationException e) { + logger.error("Validation failed for IDs: {}", ids, e); + return ResponseEntity.badRequest().body(Map.of( + "message", "Validation error occurred", + "details", e.getValidationDetails() + )); + } catch (Exception e) { + logger.error("Unexpected error during processing: {}", e.getMessage(), e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); + } } @PostMapping("/removeFromSystem") - public ResponseEntity removeFromSystem(@RequestBody List ids) - throws FileNotFoundException { - logger.debug("Starting removeFromSystem process for ids: {}", ids); - apiService.process("removeFromSystem", ids); - logger.debug("Finished removeFromSystem process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); + public ResponseEntity removeFromSystem(@RequestBody List ids) { + try { + validationService.validateAll(ids); + + logger.debug("Starting removeFromSystem process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_FROM_SYSTEM, ids); + logger.debug("Finished removeFromSystem process for ids: {}", ids); + return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); + } catch (ValidationException e) { + logger.error("Validation failed for IDs: {}", ids, e); + return ResponseEntity.badRequest().body(Map.of( + "message", "Validation error occurred", + "details", e.getValidationDetails() + )); + } catch (Exception e) { + logger.error("Unexpected error during processing: {}", e.getMessage(), e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); + } } @PostMapping("/removeFromCallList") - public ResponseEntity removeFromCallList(@RequestBody List ids) - throws FileNotFoundException { - logger.debug("Starting removeFromCallList process for ids: {}", ids); - apiService.process("removeFromCallList", ids); - logger.debug("Finished removeFromCallList process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); + public ResponseEntity removeFromCallList(@RequestBody List ids) { + try { + validationService.validateAll(ids); + + logger.debug("Starting removeFromCallList process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_FROM_CALL_LIST, ids); + logger.debug("Finished removeFromCallList process for ids: {}", ids); + return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); + } catch (ValidationException e) { + logger.error("Validation failed for IDs: {}", ids, e); + return ResponseEntity.badRequest().body(Map.of( + "message", "Validation error occurred", + "details", e.getValidationDetails() + )); + } catch (Exception e) { + logger.error("Unexpected error during processing: {}", e.getMessage(), e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); + } } @PostMapping("/downloadCSV") @@ -74,7 +132,7 @@ public class ApiController { } } - File csvFile = apiService.download("downloadCSV", request); + File csvFile = apiService.download(ConfigType.DOWNLOAD_CSV, request); InputStreamResource resource = new InputStreamResource(new FileInputStream(csvFile)); logger.debug("Finished downloadCSV process for request: {}. Sending to user...", request.getType()); @@ -89,7 +147,7 @@ public class ApiController { @GetMapping("/listDownloadTypes") public ResponseEntity listDownloadTypes() throws FileNotFoundException { - List downloadCSVTypes = apiService.getDownloadTypes("downloadCSV"); + List downloadCSVTypes = apiService.getDownloadTypes(ConfigType.DOWNLOAD_CSV); return ResponseEntity.ok(downloadCSVTypes); } diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java new file mode 100644 index 0000000..34440d7 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -0,0 +1,21 @@ +package org.micord.enums; + +import lombok.Getter; + +@Getter +public enum ConfigType { + + BLOCK("block"), + UNBLOCK("block"), + REMOVE_FROM_SYSTEM("removeFromSystem"), + REMOVE_FROM_CALL_LIST("removeFromCallList"), + DOWNLOAD_CSV("downloadCSV"), + VALIDATE_BLOCK("validateBlock"); + + private final String type; + + ConfigType(String type) { + this.type = type; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/exceptions/ValidationException.java b/config-data-executor/src/main/java/org/micord/exceptions/ValidationException.java new file mode 100644 index 0000000..3c5669c --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/exceptions/ValidationException.java @@ -0,0 +1,17 @@ +package org.micord.exceptions; + +import lombok.Getter; + +import java.util.Map; + +@Getter +public class ValidationException extends RuntimeException { + private final Map validationDetails; + + public ValidationException(String message, Map validationDetails) { + super(message); + this.validationDetails = validationDetails; + } + +} + diff --git a/config-data-executor/src/main/java/org/micord/models/CachedConfig.java b/config-data-executor/src/main/java/org/micord/models/CachedConfig.java index 1c19cbb..9b0284e 100644 --- a/config-data-executor/src/main/java/org/micord/models/CachedConfig.java +++ b/config-data-executor/src/main/java/org/micord/models/CachedConfig.java @@ -1,21 +1,16 @@ package org.micord.models; +import lombok.Getter; + import java.nio.file.attribute.FileTime; -public class CachedConfig { - private final Requests config; +@Getter +public class CachedConfig { + private final T config; private final FileTime modifiedTime; - public CachedConfig(Requests config, FileTime modifiedTime) { + public CachedConfig(T config, FileTime modifiedTime) { this.config = config; this.modifiedTime = modifiedTime; } - - public Requests getConfig() { - return config; - } - - public FileTime getModifiedTime() { - return modifiedTime; - } } diff --git a/config-data-executor/src/main/java/org/micord/models/requests/AqlConnectionParams.java b/config-data-executor/src/main/java/org/micord/models/requests/AqlConnectionParams.java new file mode 100644 index 0000000..09fbf34 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/AqlConnectionParams.java @@ -0,0 +1,49 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + +/** + * @author Maksim Tereshin + */ +@Setter +public class AqlConnectionParams { + + private String host; + private int port; + private String username; + private String password; + private String database; + private String collection; + + @XmlElement(name = "Host") + public String getHost() { + return host; + } + + @XmlElement(name = "Port") + public int getPort() { + return port; + } + + @XmlElement(name = "Username") + public String getUsername() { + return username; + } + + @XmlElement(name = "Password") + public String getPassword() { + return password; + } + + @XmlElement(name = "Database") + public String getDatabase() { + return database; + } + + @XmlElement(name = "Collection") + public String getCollection() { + return collection; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/AqlRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/AqlRequest.java new file mode 100644 index 0000000..66df4fe --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/AqlRequest.java @@ -0,0 +1,26 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElementWrapper; +import lombok.Setter; + +import java.util.List; + +@Setter +public class AqlRequest extends BaseRequest { + + private AqlConnectionParams aqlConnectionParams; + private List aqlRequestCollections; + + @XmlElement(name = "AqlConnectionParams") + public AqlConnectionParams getAqlConnectionParams() { + return aqlConnectionParams; + } + + @XmlElementWrapper(name = "AqlRequestCollections") + @XmlElement(name = "AqlRequestCollection") + public List getAqlRequestCollections() { + return aqlRequestCollections; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/AqlRequestCollection.java b/config-data-executor/src/main/java/org/micord/models/requests/AqlRequestCollection.java new file mode 100644 index 0000000..bd62c5d --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/AqlRequestCollection.java @@ -0,0 +1,23 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlValue; +import lombok.Setter; + +@Setter +public class AqlRequestCollection { + + private String type; + private String collectionUrl; + + @XmlAttribute(name = "type") + public String getType() { + return type; + } + + @XmlValue + public String getCollectionUrl() { + return collectionUrl; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/BaseRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/BaseRequest.java new file mode 100644 index 0000000..dc4cd85 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/BaseRequest.java @@ -0,0 +1,29 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlSeeAlso; +import lombok.Setter; + +import java.util.List; + +/** + * @author Maksim Tereshin + */ +@Setter +@XmlSeeAlso({SqlRequest.class, S3Request.class, AqlRequest.class}) +public abstract class BaseRequest { + + private List requestArguments; + private String requestURL; + + @XmlElement(name = "RequestArgument") + public List getRequestArguments() { + return requestArguments; + } + + @XmlElement(name = "RequestURL") + public String getRequestURL() { + return requestURL; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java new file mode 100644 index 0000000..920bf18 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java @@ -0,0 +1,16 @@ +package org.micord.models.requests; + + +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class DownloadCSVRequest { + private String type; + private List ids; + private LocalDate startDate; + private LocalDate endDate; +} + diff --git a/config-data-executor/src/main/java/org/micord/models/requests/DownloadRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/DownloadRequest.java new file mode 100644 index 0000000..ae001c3 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/DownloadRequest.java @@ -0,0 +1,23 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + + +@Setter +public class DownloadRequest extends BaseRequest { + + private SqlConnectionParams sqlConnectionParams; + private String downloadRequestType; + + @XmlElement(name = "SqlConnectionParams") + public SqlConnectionParams getSqlConnectionParams() { + return sqlConnectionParams; + } + + @XmlElement(name = "DownloadRequestType") + public String getDownloadRequestType() { + return downloadRequestType; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/Request.java b/config-data-executor/src/main/java/org/micord/models/requests/Request.java new file mode 100644 index 0000000..f4dd593 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/Request.java @@ -0,0 +1,29 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlSeeAlso; +import lombok.Setter; + +import java.util.List; + +/** + * @author Maksim Tereshin + */ +@Setter +@XmlSeeAlso({SqlRequest.class, S3Request.class}) +public abstract class Request { + + private List requestArguments; + private String requestURL; + + @XmlElement(name = "RequestArgument") + public List getRequestArguments() { + return requestArguments; + } + + @XmlElement(name = "RequestURL") + public String getRequestURL() { + return requestURL; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/RequestArgument.java b/config-data-executor/src/main/java/org/micord/models/requests/RequestArgument.java new file mode 100644 index 0000000..3e2b127 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/RequestArgument.java @@ -0,0 +1,41 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Setter; +import org.micord.enums.RequestArgumentType; + +/** + * @author Maksim Tereshin + */ +@Setter +@XmlRootElement(name = "RequestArgument") +public class RequestArgument { + + private RequestArgumentType type; + private String requestArgumentName;; + private String requestArgumentURL; + private SqlConnectionParams requestArgumentConnectionParams; + + @XmlAttribute(name = "type") + public RequestArgumentType getType() { + return type; + } + + @XmlElement(name = "RequestArgumentName") + public String getRequestArgumentName() { + return requestArgumentName; + } + + @XmlElement(name = "RequestArgumentURL") + public String getRequestArgumentURL() { + return requestArgumentURL; + } + + @XmlElement(name = "RequestArgumentConnectionParams") + public SqlConnectionParams getRequestArgumentConnectionParams() { + return requestArgumentConnectionParams; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/Requests.java b/config-data-executor/src/main/java/org/micord/models/requests/Requests.java new file mode 100644 index 0000000..4630972 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/Requests.java @@ -0,0 +1,41 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Setter; + +import java.util.List; + +/** + * @author Maksim Tereshin + */ +@Setter +@XmlRootElement(name = "Requests") +public class Requests { + + private List sqlRequests; + private List aqlRequests; + private List s3Requests; + private List downloadRequests; + + @XmlElement(name = "DownloadRequest") + public List getDownloadRequests() { + return downloadRequests; + } + + @XmlElement(name = "SqlRequest") + public List getSqlRequests() { + return sqlRequests; + } + + @XmlElement(name = "AqlRequest") + public List getAqlRequests() { + return aqlRequests; + } + + @XmlElement(name = "S3Request") + public List getS3Requests() { + return s3Requests; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java b/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java new file mode 100644 index 0000000..1699e48 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java @@ -0,0 +1,55 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + +/** + * @author Maksim Tereshin + */ +@Setter +public class S3ConnectionParams { + + private String s3Key; + private String s3Secret; + private String host; + private String port; + private String contentType; + private String method; + private String body; + + @XmlElement(name = "S3Key") + public String getS3Key() { + return s3Key; + } + + @XmlElement(name = "S3Secret") + public String getS3Secret() { + return s3Secret; + } + + @XmlElement(name = "Host") + public String getHost() { + return host; + } + + @XmlElement(name = "Port") + public String getPort() { + return port; + } + + @XmlElement(name = "ContentType") + public String getContentType() { + return contentType; + } + + @XmlElement(name = "Method") + public String getMethod() { + return method; + } + + @XmlElement(name = "Body") + public String getBody() { + return body; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/S3Request.java b/config-data-executor/src/main/java/org/micord/models/requests/S3Request.java new file mode 100644 index 0000000..a9057d7 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/S3Request.java @@ -0,0 +1,19 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + +/** + * @author Maksim Tereshin + */ +@Setter +public class S3Request extends BaseRequest { + + private S3ConnectionParams s3ConnectionParams; + + @XmlElement(name = "S3ConnectionParams") + public S3ConnectionParams getS3ConnectionParams() { + return s3ConnectionParams; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/requests/SqlConnectionParams.java b/config-data-executor/src/main/java/org/micord/models/requests/SqlConnectionParams.java new file mode 100644 index 0000000..5bd05e4 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/SqlConnectionParams.java @@ -0,0 +1,65 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + +@Setter +public class SqlConnectionParams { + + private String jdbcHost; + private String jdbcPort; + private String jdbcUsername; + private String jdbcPassword; + private String jdbcDriverClassName; + private String jdbcXaDataSourceClassName; + private String jdbcXaDataSourcePoolSize; + private String jdbcDatabase; + private String jdbcXaDataSourceBorrowConnectionTimeout; + + + @XmlElement(name = "JdbcXaDataSourceBorrowConnectionTimeout") + public String getJdbcXaDataSourceBorrowConnectionTimeout() { + return jdbcXaDataSourceBorrowConnectionTimeout; + } + + @XmlElement(name = "JdbcXaDataSourcePoolSize") + public String getJdbcXaDataSourcePoolSize() { + return jdbcXaDataSourcePoolSize; + } + + @XmlElement(name = "JdbcHost") + public String getJdbcHost() { + return jdbcHost; + } + + @XmlElement(name = "JdbcPort") + public String getJdbcPort() { + return jdbcPort; + } + + @XmlElement(name = "JdbcUsername") + public String getJdbcUsername() { + return jdbcUsername; + } + + @XmlElement(name = "JdbcPassword") + public String getJdbcPassword() { + return jdbcPassword; + } + + @XmlElement(name = "JdbcDriverClassName") + public String getJdbcDriverClassName() { + return jdbcDriverClassName; + } + + @XmlElement(name = "JdbcXaDataSourceClassName") + public String getJdbcXaDataSourceClassName() { + return jdbcXaDataSourceClassName; + } + + @XmlElement(name = "JdbcDatabase") + public String getJdbcDatabase() { + return jdbcDatabase; + } + +} \ No newline at end of file diff --git a/config-data-executor/src/main/java/org/micord/models/requests/SqlRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/SqlRequest.java new file mode 100644 index 0000000..0d67779 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/SqlRequest.java @@ -0,0 +1,19 @@ +package org.micord.models.requests; + +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; + +/** + * @author Maksim Tereshin + */ +@Setter +public class SqlRequest extends BaseRequest { + + private SqlConnectionParams sqlConnectionParams; + + @XmlElement(name = "SqlConnectionParams") + public SqlConnectionParams getSqlConnectionParams() { + return sqlConnectionParams; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/validations/ValidationRule.java b/config-data-executor/src/main/java/org/micord/models/validations/ValidationRule.java new file mode 100644 index 0000000..6912655 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/validations/ValidationRule.java @@ -0,0 +1,39 @@ +package org.micord.models.validations; + +import jakarta.xml.bind.annotation.XmlAttribute; +import jakarta.xml.bind.annotation.XmlElement; +import lombok.Setter; +import org.micord.models.requests.SqlConnectionParams; + +import java.util.List; + + +@Setter +public class ValidationRule { + + private SqlConnectionParams sqlConnectionParams; + private String requestURL; + private String idColumn; + private List validationColumns; + + @XmlElement(name = "RequestURL") + public String getRequestURL() { + return requestURL; + } + + @XmlElement(name = "SqlConnectionParams") + public SqlConnectionParams getSqlConnectionParams() { + return sqlConnectionParams; + } + + @XmlAttribute(name = "validationColumns") + public List getValidationColumns() { + return validationColumns; + } + + @XmlAttribute(name = "idColumn") + public String getIdColumn() { + return idColumn; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/models/validations/ValidationRules.java b/config-data-executor/src/main/java/org/micord/models/validations/ValidationRules.java new file mode 100644 index 0000000..ce4df7b --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/validations/ValidationRules.java @@ -0,0 +1,21 @@ +package org.micord.models.validations; + +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; +import lombok.Setter; + +import java.util.List; + + +@Setter +@XmlRootElement(name = "ValidationRules") +public class ValidationRules { + + private List validationRules; + + @XmlElement(name = "ValidationRule") + public List getValidationRules() { + return validationRules; + } + +} diff --git a/config-data-executor/src/main/java/org/micord/service/ApiService.java b/config-data-executor/src/main/java/org/micord/service/ApiService.java index 5a2b68d..97e5c6c 100644 --- a/config-data-executor/src/main/java/org/micord/service/ApiService.java +++ b/config-data-executor/src/main/java/org/micord/service/ApiService.java @@ -1,7 +1,9 @@ package org.micord.service; -import org.micord.models.*; -import org.micord.utils.ConfigLoader; +import org.micord.enums.ConfigType; +import org.micord.models.requests.DownloadCSVRequest; +import org.micord.models.requests.DownloadRequest; +import org.micord.models.requests.Requests; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -10,7 +12,8 @@ import org.springframework.stereotype.Service; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.*; +import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; @Service @@ -18,22 +21,22 @@ public class ApiService { private static final Logger logger = LoggerFactory.getLogger(ApiService.class); - @Autowired - private ConfigLoader configLoader; - @Autowired private RequestService sqlAndAqlService; @Autowired private DownloadService downloadService; - public void process(String methodName, List ids) throws FileNotFoundException { - Requests config = getConfig(methodName); + @Autowired + private ConfigService configService; + + public void process(ConfigType methodName, List ids) throws FileNotFoundException { + Requests config = configService.getConfig(methodName, Requests.class); sqlAndAqlService.processSqlAndAqlRequests(config, ids); } - public File download(String methodName, DownloadCSVRequest request) throws IOException { - Requests config = getConfig(methodName); + public File download(ConfigType methodName, DownloadCSVRequest request) throws IOException { + Requests config = configService.getConfig(methodName, Requests.class); String type = request.getType(); List ids = Optional.ofNullable(request.getIds()) @@ -48,22 +51,12 @@ public class ApiService { return downloadService.download(selectedRequest, ids, request.getStartDate(), request.getEndDate()); } - public List getDownloadTypes(String methodName) throws FileNotFoundException { - Requests config = getConfig(methodName); + public List getDownloadTypes(ConfigType methodName) throws FileNotFoundException { + Requests config = configService.getConfig(methodName, Requests.class); return config.getDownloadRequests().stream() .map(DownloadRequest::getDownloadRequestType) .collect(Collectors.toList()); } - private Requests getConfig(String methodName) throws FileNotFoundException { - logger.debug("Loading configuration for method: {}", methodName); - Optional optionalConfig = configLoader.loadConfigIfModified(methodName); - - if (optionalConfig.isEmpty()) { - throw new FileNotFoundException("Configuration for method " + methodName + " could not be loaded."); - } - - return optionalConfig.get(); - } } diff --git a/config-data-executor/src/main/java/org/micord/service/ConfigService.java b/config-data-executor/src/main/java/org/micord/service/ConfigService.java new file mode 100644 index 0000000..d7d99f3 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/service/ConfigService.java @@ -0,0 +1,33 @@ +package org.micord.service; + + +import org.micord.enums.ConfigType; +import org.micord.utils.ConfigLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.FileNotFoundException; +import java.util.Optional; + +@Service +public class ConfigService { + + private static final Logger logger = LoggerFactory.getLogger(ConfigService.class); + + @Autowired + private ConfigLoader configLoader; + + public T getConfig(ConfigType methodName, Class configClass) throws FileNotFoundException { + logger.debug("Loading configuration for method: {}", methodName); + Optional optionalConfig = configLoader.loadConfigIfModified(methodName, configClass); + + if (optionalConfig.isEmpty()) { + throw new FileNotFoundException("Configuration for method " + methodName + " could not be loaded."); + } + + return optionalConfig.get(); + } + +} diff --git a/config-data-executor/src/main/java/org/micord/service/DownloadService.java b/config-data-executor/src/main/java/org/micord/service/DownloadService.java index d70ede4..de27af8 100644 --- a/config-data-executor/src/main/java/org/micord/service/DownloadService.java +++ b/config-data-executor/src/main/java/org/micord/service/DownloadService.java @@ -1,8 +1,8 @@ package org.micord.service; import org.micord.config.DatabaseConnection; -import org.micord.models.DownloadRequest; -import org.micord.models.RequestArgument; +import org.micord.models.requests.DownloadRequest; +import org.micord.models.requests.RequestArgument; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 72d23b7..be88d57 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -1,5 +1,22 @@ package org.micord.service; +import com.arangodb.ArangoCursor; +import com.arangodb.ArangoDBException; +import com.arangodb.ArangoDatabase; +import com.arangodb.entity.StreamTransactionEntity; +import com.arangodb.model.AqlQueryOptions; +import com.arangodb.model.StreamTransactionOptions; +import org.micord.config.ArangoDBConnection; +import org.micord.config.DatabaseConnection; +import org.micord.config.S3HttpConnection; +import org.micord.enums.RequestArgumentType; +import org.micord.models.requests.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import java.net.HttpURLConnection; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -12,23 +29,6 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; -import com.arangodb.ArangoCursor; -import com.arangodb.ArangoDBException; -import com.arangodb.ArangoDatabase; -import com.arangodb.entity.StreamTransactionEntity; -import com.arangodb.model.AqlQueryOptions; -import com.arangodb.model.StreamTransactionOptions; -import org.micord.config.ArangoDBConnection; -import org.micord.config.DatabaseConnection; -import org.micord.config.S3HttpConnection; -import org.micord.enums.RequestArgumentType; -import org.micord.models.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - /** * @author Maksim Tereshin */ @@ -44,16 +44,20 @@ public class RequestService { logger.debug("Starting processing of S3 requests"); if (s3Requests != null && !s3Requests.isEmpty()) { List> requestFutures = s3Requests.stream() - .map(request -> CompletableFuture.runAsync(() -> processS3Request(request, ids))) + .map(request -> CompletableFuture.runAsync(() -> { + try { + processS3Request(request, ids); + } catch (Exception e) { + throw new RuntimeException("Error processing S3 request: " + request, e); + } + })) .toList(); CompletableFuture.allOf(requestFutures.toArray(new CompletableFuture[0])) - .thenRun(() -> logger.info("Successfully processed all S3 requests.")) .whenComplete((result, ex) -> { if (ex != null) { logger.error("Error processing S3 requests", ex); - } else { - logger.info("Successfully processed all S3 requests."); + throw new RuntimeException("Error processing S3 requests", ex); } }); } @@ -81,10 +85,16 @@ public class RequestService { } catch (SQLException e) { logger.error("Failed to execute query for RequestArgument", e); + throw new RuntimeException("Error executing database query: " + argument.getRequestArgumentURL(), e); } } } + if (files.isEmpty()) { + logger.warn("No files found for S3 request"); + throw new RuntimeException("No files found for S3 request"); + } + files.forEach(file -> { HttpRequest httpRequest; logger.debug("Starting building HTTP request for S3 request"); @@ -92,7 +102,7 @@ public class RequestService { if (file == null || file.isBlank()) { logger.warn("Skipping invalid file path: {}", file); - return; + throw new RuntimeException("Invalid file path"); } try { httpRequest = S3HttpConnection.buildHttpRequest(request, file); @@ -167,6 +177,7 @@ public class RequestService { } catch (SQLException e) { logger.error("SQL execution failed for query: {}", query, e); + throw new RuntimeException("Error executing SQL query", e); } } diff --git a/config-data-executor/src/main/java/org/micord/service/ValidationService.java b/config-data-executor/src/main/java/org/micord/service/ValidationService.java new file mode 100644 index 0000000..1cc36c2 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/service/ValidationService.java @@ -0,0 +1,101 @@ +package org.micord.service; + +import org.micord.config.DatabaseConnection; +import org.micord.enums.ConfigType; +import org.micord.exceptions.ValidationException; +import org.micord.models.validations.ValidationRule; +import org.micord.models.validations.ValidationRules; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.io.FileNotFoundException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +public class ValidationService { + + @Autowired + private ConfigService configService; + + public Map> validate(List ids, ValidationRule rule) throws SQLException { + + String query = rule.getRequestURL(); + if (!query.contains("${endpointArguments}")) { + throw new IllegalArgumentException("The query must contain the placeholder '${endpointArguments}' for ID replacement."); + } + + String finalQuery = query.replace("${endpointArguments}", "(" + ids.stream().map(id -> "?").collect(Collectors.joining(", ")) + ")"); + + try (Connection connection = DatabaseConnection.getConnection( + rule.getSqlConnectionParams()); + PreparedStatement preparedStatement = connection.prepareStatement(finalQuery)) { + + for (int i = 0; i < ids.size(); i++) { + preparedStatement.setObject(i + 1, UUID.fromString(ids.get(i))); + } + + try (ResultSet resultSet = preparedStatement.executeQuery()) { + Map> validationResults = new HashMap<>(); + + while (resultSet.next()) { + String id = resultSet.getString(rule.getIdColumn()); + Map columnValues = new HashMap<>(); + + for (String column : rule.getValidationColumns()) { + Object value = resultSet.getObject(column); + columnValues.put(column, value); + } + validationResults.put(id, columnValues); + } + + return validationResults; + } catch (SQLException e) { + throw new SQLException("Failed to execute query for ValidationRule", e); + } + } + } + + public Map validateAll(List ids) throws ValidationException, FileNotFoundException, SQLException { + ValidationRules config = configService.getConfig(ConfigType.VALIDATE_BLOCK, ValidationRules.class); + + if (config.getValidationRules() == null || config.getValidationRules().isEmpty()) { + return null; + } + + Map> validationResults = new HashMap<>(); + + for (ValidationRule rule : config.getValidationRules()) { + validationResults.putAll(validate(ids, rule)); + } + + Map invalidRecords = new HashMap<>(); + + validationResults.forEach((id, columnValues) -> { + List invalidColumns = columnValues.entrySet().stream() + .filter(entry -> Boolean.FALSE.equals(entry.getValue())) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + if (!invalidColumns.isEmpty()) { + String message = "Запись с UUID = " + id + " не прошла проверку по следующим колонкам: " + String.join(", ", invalidColumns); + invalidRecords.put(id, message); + } + }); + + if (!invalidRecords.isEmpty()) { + throw new ValidationException("Validation failed for some records", invalidRecords); + } + + return invalidRecords; + + } + +} diff --git a/config-data-executor/src/main/java/org/micord/utils/ConfigLoader.java b/config-data-executor/src/main/java/org/micord/utils/ConfigLoader.java index 9347ed3..45586ac 100644 --- a/config-data-executor/src/main/java/org/micord/utils/ConfigLoader.java +++ b/config-data-executor/src/main/java/org/micord/utils/ConfigLoader.java @@ -1,5 +1,13 @@ package org.micord.utils; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; +import org.micord.enums.ConfigType; +import org.micord.models.CachedConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -10,14 +18,6 @@ import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; -import jakarta.xml.bind.JAXBContext; -import jakarta.xml.bind.JAXBException; -import jakarta.xml.bind.Unmarshaller; - -import org.micord.models.CachedConfig; -import org.micord.models.Requests; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; /** * @author Maksim Tereshin @@ -31,7 +31,9 @@ public class ConfigLoader { @Value("${configDirectory}") private String configDirectory; - public Optional loadConfigIfModified(String methodName) { + + public Optional loadConfigIfModified(ConfigType configType, Class configClass) { + String methodName = configType.getType(); String fileName = methodName + ".xml"; if (configDirectory == null) { @@ -47,14 +49,14 @@ public class ConfigLoader { if (cachedConfig == null || !currentModifiedTime.equals(cachedConfig.getModifiedTime())) { // Load the updated configuration - JAXBContext jaxbContext = JAXBContext.newInstance(Requests.class); + JAXBContext jaxbContext = JAXBContext.newInstance(configClass); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - Requests loadedConfig = (Requests) unmarshaller.unmarshal(configFile); + T loadedConfig = unmarshalConfig(configFile, configClass); cachedConfigs.put(methodName, new CachedConfig(loadedConfig, currentModifiedTime)); return Optional.of(loadedConfig); } else { - return Optional.of(cachedConfigs.get(methodName).getConfig()); + return (Optional) Optional.of(cachedConfigs.get(methodName).getConfig()); } } @@ -67,4 +69,10 @@ public class ConfigLoader { return Optional.empty(); // Return empty if unmarshalling fails } } + + private T unmarshalConfig(File configFile, Class configClass) throws JAXBException { + JAXBContext jaxbContext = JAXBContext.newInstance(configClass); + Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); + return configClass.cast(unmarshaller.unmarshal(configFile)); + } } From e14353a565ed6b4a8277e9aefcb29300ba46920b Mon Sep 17 00:00:00 2001 From: kochetkov Date: Mon, 2 Dec 2024 11:48:00 +0300 Subject: [PATCH 011/134] SUPPORT-8762 --- .../exception/ConfigExecutorException.java | 8 ++++++ .../ConfigExecutorExceptionHandler.java | 27 +++++++++++++++++++ .../java/service/ConfigExecutorService.java | 27 +++++++++++++++++-- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 backend/src/main/java/ru/micord/ervu_eks/exception/ConfigExecutorException.java create mode 100644 backend/src/main/java/ru/micord/ervu_eks/handler/ConfigExecutorExceptionHandler.java diff --git a/backend/src/main/java/ru/micord/ervu_eks/exception/ConfigExecutorException.java b/backend/src/main/java/ru/micord/ervu_eks/exception/ConfigExecutorException.java new file mode 100644 index 0000000..3c060cc --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu_eks/exception/ConfigExecutorException.java @@ -0,0 +1,8 @@ +package ru.micord.ervu_eks.exception; + +public class ConfigExecutorException extends RuntimeException{ + + public ConfigExecutorException(String message) { + super(message); + } +} diff --git a/backend/src/main/java/ru/micord/ervu_eks/handler/ConfigExecutorExceptionHandler.java b/backend/src/main/java/ru/micord/ervu_eks/handler/ConfigExecutorExceptionHandler.java new file mode 100644 index 0000000..fbe8b48 --- /dev/null +++ b/backend/src/main/java/ru/micord/ervu_eks/handler/ConfigExecutorExceptionHandler.java @@ -0,0 +1,27 @@ +package ru.micord.ervu_eks.handler; + +import org.springframework.stereotype.Component; +import ru.micord.ervu_eks.exception.ConfigExecutorException; + +import ru.cg.webbpm.modules.core.error_handling.api.ProcessedWebException; +import ru.cg.webbpm.modules.core.error_handling.api.WebExceptionHandler; + +@Component +public class ConfigExecutorExceptionHandler implements WebExceptionHandler { + + @Override + public boolean accept(Throwable throwable) { + return throwable instanceof ConfigExecutorException; + } + + @Override + public double weight() { + return 1000; + } + + @Override + public ProcessedWebException process(Throwable throwable) { + return new ProcessedWebException() + .addMessage(throwable.getMessage()); + } +} diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index f5f51c7..d046375 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -6,8 +6,11 @@ import java.util.Arrays; import java.util.Base64; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.Objects; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import dto.ExportDataRequest; import model.FileModel; import org.slf4j.Logger; @@ -17,10 +20,13 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; +import ru.micord.ervu_eks.exception.ConfigExecutorException; /** * @author Evgenii Malkov @@ -43,8 +49,7 @@ public class ConfigExecutorService { HttpHeaders headers = new HttpHeaders(); HttpEntity entity = new HttpEntity<>(request, headers); - ResponseEntity response = restTemplate.exchange( - url.concat("/").concat("downloadCSV"), + ResponseEntity response = restTemplate.exchange(url.concat("/").concat("downloadCSV"), HttpMethod.POST, entity, byte[].class ); @@ -73,6 +78,24 @@ public class ConfigExecutorService { ); return response.getBody(); } + catch (HttpClientErrorException e) { + + if (e.getStatusCode() == HttpStatus.BAD_REQUEST) { + Map responseMap = new Gson().fromJson(e.getResponseBodyAsString(), + new TypeToken>() { + }.getType() + ); + + String details = responseMap.get("details"); + throw new ConfigExecutorException(details); + } + else { + throw new RuntimeException( + String.format("Failed call config executor service method: %s for ids: %s with error", + methodPath, ids + ), e); + } + } catch (Exception e) { throw new RuntimeException( String.format("Failed call config executor service method: %s for ids: %s with error", From ba679d80e2845509cbecabfb726fd1eaa581dd94 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 3 Dec 2024 14:50:19 +0100 Subject: [PATCH 012/134] Fix call to S3 --- .../main/java/org/micord/config/S3HttpConnection.java | 10 ++++------ .../org/micord/models/requests/S3ConnectionParams.java | 9 ++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java b/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java index 616f698..dce260c 100644 --- a/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java +++ b/config-data-executor/src/main/java/org/micord/config/S3HttpConnection.java @@ -8,18 +8,16 @@ import javax.crypto.spec.SecretKeySpec; import java.net.URI; import java.net.http.HttpRequest; import java.nio.charset.StandardCharsets; +import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Base64; -/** - * @author Maksim Tereshin - */ public class S3HttpConnection { public static HttpRequest buildHttpRequest(S3Request request, String file) throws Exception { S3ConnectionParams connectionParams = request.getS3ConnectionParams(); - String host = connectionParams.getHost() + ":" + connectionParams.getPort(); + String host = connectionParams.getProtocol() + "://" + connectionParams.getHost() + ":" + connectionParams.getPort(); String s3Key = connectionParams.getS3Key(); String s3Secret = connectionParams.getS3Secret(); String method = connectionParams.getMethod().toUpperCase(); @@ -27,12 +25,12 @@ public class S3HttpConnection { String resource = "/" + file; String contentType = connectionParams.getContentType(); - String date = ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME); + String date = ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'")); String signature = generateSignature(method, contentType, date, resource, s3Secret); HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() - .uri(URI.create("http://" + host + resource)) + .uri(URI.create(host + resource)) .header("Date", date) .header("Content-Type", contentType) .header("Authorization", "AWS " + s3Key + ":" + signature); diff --git a/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java b/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java index 1699e48..642942e 100644 --- a/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java +++ b/config-data-executor/src/main/java/org/micord/models/requests/S3ConnectionParams.java @@ -3,14 +3,12 @@ package org.micord.models.requests; import jakarta.xml.bind.annotation.XmlElement; import lombok.Setter; -/** - * @author Maksim Tereshin - */ @Setter public class S3ConnectionParams { private String s3Key; private String s3Secret; + private String protocol; private String host; private String port; private String contentType; @@ -27,6 +25,11 @@ public class S3ConnectionParams { return s3Secret; } + @XmlElement(name = "Protocol") + public String getProtocol() { + return protocol; + } + @XmlElement(name = "Host") public String getHost() { return host; From 8b89cfbe905f5526f721d84ddf5eeefd3a6afa3a Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 9 Dec 2024 09:19:50 +0100 Subject: [PATCH 013/134] Add atomikos max timeout --- config-data-executor/src/main/resources/transactions.properties | 1 + 1 file changed, 1 insertion(+) create mode 100644 config-data-executor/src/main/resources/transactions.properties diff --git a/config-data-executor/src/main/resources/transactions.properties b/config-data-executor/src/main/resources/transactions.properties new file mode 100644 index 0000000..c1e6711 --- /dev/null +++ b/config-data-executor/src/main/resources/transactions.properties @@ -0,0 +1 @@ +com.atomikos.icatch.max_timeout = 300000 From 0a34aff6a6bc12a443522cf7f95cdcdad5b2e172 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 9 Dec 2024 12:16:37 +0100 Subject: [PATCH 014/134] Add validate config --- config/cde-xml/validateBlock.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 config/cde-xml/validateBlock.xml diff --git a/config/cde-xml/validateBlock.xml b/config/cde-xml/validateBlock.xml new file mode 100644 index 0000000..0e95812 --- /dev/null +++ b/config/cde-xml/validateBlock.xml @@ -0,0 +1,19 @@ + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + person_registry + + + \ No newline at end of file From c113a26e5923d16ee4b02de86bae233508f1087b Mon Sep 17 00:00:00 2001 From: kochetkov Date: Mon, 9 Dec 2024 16:18:01 +0300 Subject: [PATCH 015/134] fix --- .../main/java/service/ConfigExecutorService.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index d046375..7a64299 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -81,13 +82,18 @@ public class ConfigExecutorService { catch (HttpClientErrorException e) { if (e.getStatusCode() == HttpStatus.BAD_REQUEST) { - Map responseMap = new Gson().fromJson(e.getResponseBodyAsString(), - new TypeToken>() { + Map responseMap = new Gson().fromJson(e.getResponseBodyAsString(), + new TypeToken>() { }.getType() ); - String details = responseMap.get("details"); - throw new ConfigExecutorException(details); + @SuppressWarnings("unchecked") + Map details = (Map) responseMap.get("details"); + String detailsStr = details.entrySet() + .stream() + .map(entry -> entry.getKey() + " : " + entry.getValue()) + .collect(Collectors.joining("\n")); + throw new ConfigExecutorException(detailsStr); } else { throw new RuntimeException( From e1380c172a80ebc83248507eee714c7710f082f8 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Mon, 9 Dec 2024 16:31:19 +0300 Subject: [PATCH 016/134] fix --- backend/src/main/java/service/ConfigExecutorService.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index 7a64299..4a92b8e 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -89,10 +89,7 @@ public class ConfigExecutorService { @SuppressWarnings("unchecked") Map details = (Map) responseMap.get("details"); - String detailsStr = details.entrySet() - .stream() - .map(entry -> entry.getKey() + " : " + entry.getValue()) - .collect(Collectors.joining("\n")); + String detailsStr = String.join("\n", details.values()); throw new ConfigExecutorException(detailsStr); } else { From 409b07342a227931a3cf558b30d1048ccad1d081 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Mon, 9 Dec 2024 19:44:16 +0300 Subject: [PATCH 017/134] fix --- config-data-executor/src/main/resources/application.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config-data-executor/src/main/resources/application.yml b/config-data-executor/src/main/resources/application.yml index 0cf969f..f800835 100644 --- a/config-data-executor/src/main/resources/application.yml +++ b/config-data-executor/src/main/resources/application.yml @@ -1 +1,4 @@ configDirectory: C:\work\ervu-eks\config\cde-xml +logging: + level: + root: info From 6065d8615b61be61701af1168bb3b22008aa0962 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 9 Dec 2024 21:09:49 +0100 Subject: [PATCH 018/134] Add validate config --- config/cde-xml/validateBlock.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cde-xml/validateBlock.xml b/config/cde-xml/validateBlock.xml index 0e95812..97e46c0 100644 --- a/config/cde-xml/validateBlock.xml +++ b/config/cde-xml/validateBlock.xml @@ -2,7 +2,7 @@ From bbcae0049a2814a84bf9bb0d6bbdd7979f71eb9d Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 9 Dec 2024 21:27:15 +0100 Subject: [PATCH 019/134] Add validate config --- config/cde-xml/validateBlock.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cde-xml/validateBlock.xml b/config/cde-xml/validateBlock.xml index 97e46c0..93dde48 100644 --- a/config/cde-xml/validateBlock.xml +++ b/config/cde-xml/validateBlock.xml @@ -2,7 +2,7 @@ From 22656a83496d3ad6d09277b4a133fbd24bf0a93b Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 9 Dec 2024 21:46:20 +0100 Subject: [PATCH 020/134] Add validate config --- config/cde-xml/validateBlock.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cde-xml/validateBlock.xml b/config/cde-xml/validateBlock.xml index 93dde48..3819851 100644 --- a/config/cde-xml/validateBlock.xml +++ b/config/cde-xml/validateBlock.xml @@ -2,7 +2,7 @@ From 2f9f1c7e7e2bdd47b05cb3c202982b86583d5701 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 10 Dec 2024 09:50:21 +0100 Subject: [PATCH 021/134] Change call list config --- config/cde-xml/removeFromCallList.xml | 52 +++++++++++---------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/config/cde-xml/removeFromCallList.xml b/config/cde-xml/removeFromCallList.xml index 404f7fb..de2fe8f 100644 --- a/config/cde-xml/removeFromCallList.xml +++ b/config/cde-xml/removeFromCallList.xml @@ -3,39 +3,26 @@ - - - 10.10.31.118 - 5432 - ervu - ervu - org.postgresql.Driver - org.postgresql.xa.PGXADataSource - 50 - summon-list-registry - - +$$ +DECLARE +t varchar(100); +begin +select pg_sleep(60) into t; +--delete from recruits where 1=2; + +update recruits +set system_pgs_status=null, extra_info = jsonb_set(coalesce(extra_info,'{}'::jsonb), '{blocked}', + ('{"cur":'|| coalesce('"'||current_recruitment_id::text||'"','null')|| + ',"trg":'|| coalesce('"'||target_recruitment_id::text||'"','null')|| + ',"dio":'|| coalesce('"'||department_id_old::text||'"','null')|| + ',"st":'|| coalesce('"'||system_pgs_status::text||'"','null')||'}')::jsonb + ) +where id IN ${endpointArguments}; + +end +$$; + - - - @@ -49,4 +36,5 @@ person_registry + \ No newline at end of file From dcd965eb637e102b82fd7cafa6556408f478d258 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 10 Dec 2024 11:15:59 +0100 Subject: [PATCH 022/134] Change transactional timeout --- .../src/main/java/org/micord/service/RequestService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index be88d57..10e20f8 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -137,7 +137,7 @@ public class RequestService { } } - @Transactional + @Transactional(timeout = 300000) public void processSqlAndAqlRequests(Requests config, List ids) { logger.debug("Starting transactional processing of requests"); if (config.getSqlRequests() != null) { From 059f6f87407477836e6e3927fa45384563a972f4 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Tue, 10 Dec 2024 14:21:21 +0300 Subject: [PATCH 023/134] add default timeout --- config-data-executor/src/main/resources/application.yml | 4 ++++ .../src/main/resources/transactions.properties | 1 + 2 files changed, 5 insertions(+) diff --git a/config-data-executor/src/main/resources/application.yml b/config-data-executor/src/main/resources/application.yml index f800835..26b8855 100644 --- a/config-data-executor/src/main/resources/application.yml +++ b/config-data-executor/src/main/resources/application.yml @@ -1,4 +1,8 @@ configDirectory: C:\work\ervu-eks\config\cde-xml +spring: + mvc: + servlet: + load-on-startup: 1 logging: level: root: info diff --git a/config-data-executor/src/main/resources/transactions.properties b/config-data-executor/src/main/resources/transactions.properties index c1e6711..4378827 100644 --- a/config-data-executor/src/main/resources/transactions.properties +++ b/config-data-executor/src/main/resources/transactions.properties @@ -1 +1,2 @@ com.atomikos.icatch.max_timeout = 300000 +com.atomikos.icatch.default_jta_timeout=300000 From b97e8a6a2cc4b5c1dea10410a78b1aa647065ce3 Mon Sep 17 00:00:00 2001 From: kochetkov Date: Tue, 10 Dec 2024 14:22:31 +0300 Subject: [PATCH 024/134] remove timeout from sources --- .../src/main/java/org/micord/service/RequestService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 10e20f8..be88d57 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -137,7 +137,7 @@ public class RequestService { } } - @Transactional(timeout = 300000) + @Transactional public void processSqlAndAqlRequests(Requests config, List ids) { logger.debug("Starting transactional processing of requests"); if (config.getSqlRequests() != null) { From c7c0d00dd6f0ce3ae0fa7a7968da511d2199bd92 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 11 Dec 2024 19:18:07 +0100 Subject: [PATCH 025/134] Fix Config Type for unblock --- .../src/main/java/org/micord/enums/ConfigType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java index 34440d7..3ff1925 100644 --- a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -6,7 +6,7 @@ import lombok.Getter; public enum ConfigType { BLOCK("block"), - UNBLOCK("block"), + UNBLOCK("unblock"), REMOVE_FROM_SYSTEM("removeFromSystem"), REMOVE_FROM_CALL_LIST("removeFromCallList"), DOWNLOAD_CSV("downloadCSV"), From 51da1a28bcab0876067632db40bb838f5d019198 Mon Sep 17 00:00:00 2001 From: ilyin Date: Mon, 16 Dec 2024 09:26:21 +0300 Subject: [PATCH 026/134] rename_field --- resources/src/main/resources/business-model/main.page | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/src/main/resources/business-model/main.page b/resources/src/main/resources/business-model/main.page index 7b418b5..2f90ec3 100644 --- a/resources/src/main/resources/business-model/main.page +++ b/resources/src/main/resources/business-model/main.page @@ -2620,7 +2620,7 @@ 69af9ec9-d640-499a-bf05-cda6ce64a81f 9c41745c-3ec3-4945-bdfd-0a18f4d1d9d4 - ИД ЕРВУ граждан_unload + ИД ЕРВУ граждан или иные сведения_unload false false @@ -2652,7 +2652,7 @@ label -"ИД ЕРВУ граждан" +"ИД ЕРВУ граждан или иные сведения" From 5495e32f85e09be9f220c3184e631b889400348d Mon Sep 17 00:00:00 2001 From: "m.epshtein" Date: Mon, 16 Dec 2024 11:31:24 +0300 Subject: [PATCH 027/134] new css --- frontend/src/resources/css/components-eks.css | 9 +++++++++ frontend/src/resources/css/style.css | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 frontend/src/resources/css/components-eks.css diff --git a/frontend/src/resources/css/components-eks.css b/frontend/src/resources/css/components-eks.css new file mode 100644 index 0000000..cd1665b --- /dev/null +++ b/frontend/src/resources/css/components-eks.css @@ -0,0 +1,9 @@ +.webbpm.ervu-eks .container-inside > div > div > [page-object]:first-child { + padding-top: 15px; +} + +.webbpm.ervu-eks .container-inside > div > div > [page-object] { + display: inherit; + margin-bottom: 10px; + padding: 0 40px; +} \ No newline at end of file diff --git a/frontend/src/resources/css/style.css b/frontend/src/resources/css/style.css index d7d29b3..70f0b3c 100644 --- a/frontend/src/resources/css/style.css +++ b/frontend/src/resources/css/style.css @@ -7,4 +7,5 @@ @import "../../../node_modules/@webbpm/base-package/css/style.css"; @import "structure.css"; @import "inbox-app.css"; -@import "components-app.css"; \ No newline at end of file +@import "components-app.css"; +@import "components-eks.css"; \ No newline at end of file From 7da06bd659c381413199c434570555e3d0422a33 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Mon, 16 Dec 2024 10:22:36 +0100 Subject: [PATCH 028/134] Improved logging and exception handling --- .../org/micord/controller/ApiController.java | 126 +++++++----------- .../exceptions/GlobalExceptionHandler.java | 106 +++++++++++++++ .../org/micord/service/RequestService.java | 124 +++++++++-------- 3 files changed, 220 insertions(+), 136 deletions(-) create mode 100644 config-data-executor/src/main/java/org/micord/exceptions/GlobalExceptionHandler.java diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 294f4f8..53ff3f8 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.sql.SQLException; import java.util.List; import java.util.Map; @@ -39,98 +40,58 @@ public class ApiController { private ValidationService validationService; @PostMapping("/block") - public ResponseEntity block(@RequestBody List ids) { - try { - validationService.validateAll(ids); + public ResponseEntity block(@RequestBody List ids) throws SQLException, FileNotFoundException { + validationService.validateAll(ids); - logger.debug("Starting block process for ids: {}", ids); - apiService.process(ConfigType.BLOCK, ids); - logger.debug("Finished block process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); - } catch (ValidationException e) { - logger.error("Validation failed for IDs: {}", ids, e); - return ResponseEntity.badRequest().body(Map.of( - "message", "Validation error occurred", - "details", e.getValidationDetails() - )); - } catch (Exception e) { - logger.error("Unexpected error during processing: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); - } + logger.debug("Starting block process for ids: {}", ids); + apiService.process(ConfigType.BLOCK, ids); + logger.debug("Finished block process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); } + @PostMapping("/unblock") - public ResponseEntity unblock(@RequestBody List ids) { - try { - validationService.validateAll(ids); + public ResponseEntity unblock(@RequestBody List ids) throws SQLException, FileNotFoundException { + validationService.validateAll(ids); - logger.debug("Starting unblock process for ids: {}", ids); - apiService.process(ConfigType.UNBLOCK, ids); - logger.debug("Finished unblock process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); - } catch (ValidationException e) { - logger.error("Validation failed for IDs: {}", ids, e); - return ResponseEntity.badRequest().body(Map.of( - "message", "Validation error occurred", - "details", e.getValidationDetails() - )); - } catch (Exception e) { - logger.error("Unexpected error during processing: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); - } + logger.debug("Starting unblock process for ids: {}", ids); + apiService.process(ConfigType.UNBLOCK, ids); + logger.debug("Finished unblock process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); } + @PostMapping("/removeFromSystem") - public ResponseEntity removeFromSystem(@RequestBody List ids) { - try { - validationService.validateAll(ids); + public ResponseEntity removeFromSystem(@RequestBody List ids) throws SQLException, FileNotFoundException { + validationService.validateAll(ids); - logger.debug("Starting removeFromSystem process for ids: {}", ids); - apiService.process(ConfigType.REMOVE_FROM_SYSTEM, ids); - logger.debug("Finished removeFromSystem process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); - } catch (ValidationException e) { - logger.error("Validation failed for IDs: {}", ids, e); - return ResponseEntity.badRequest().body(Map.of( - "message", "Validation error occurred", - "details", e.getValidationDetails() - )); - } catch (Exception e) { - logger.error("Unexpected error during processing: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); - } + logger.debug("Starting removeFromSystem process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_FROM_SYSTEM, ids); + logger.debug("Finished removeFromSystem process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); } + @PostMapping("/removeFromCallList") - public ResponseEntity removeFromCallList(@RequestBody List ids) { - try { - validationService.validateAll(ids); + public ResponseEntity removeFromCallList(@RequestBody List ids) throws SQLException, FileNotFoundException { + validationService.validateAll(ids); - logger.debug("Starting removeFromCallList process for ids: {}", ids); - apiService.process(ConfigType.REMOVE_FROM_CALL_LIST, ids); - logger.debug("Finished removeFromCallList process for ids: {}", ids); - return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); - } catch (ValidationException e) { - logger.error("Validation failed for IDs: {}", ids, e); - return ResponseEntity.badRequest().body(Map.of( - "message", "Validation error occurred", - "details", e.getValidationDetails() - )); - } catch (Exception e) { - logger.error("Unexpected error during processing: {}", e.getMessage(), e); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal error occurred."); - } + logger.debug("Starting removeFromCallList process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_FROM_CALL_LIST, ids); + logger.debug("Finished removeFromCallList process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); } + @PostMapping("/downloadCSV") - public ResponseEntity downloadCSV(@RequestBody DownloadCSVRequest request) - throws IOException { + public ResponseEntity downloadCSV(@RequestBody DownloadCSVRequest request) throws IOException { logger.debug("Starting downloadCSV process for request: {}", request.getType()); - if (request.getStartDate() != null && request.getEndDate() != null) { - if (request.getStartDate().isAfter(request.getEndDate())) { - throw new IllegalArgumentException("Start date must be before end date"); - } - } + + validateRequestDates(request); File csvFile = apiService.download(ConfigType.DOWNLOAD_CSV, request); InputStreamResource resource = new InputStreamResource(new FileInputStream(csvFile)); @@ -144,11 +105,22 @@ public class ApiController { .body(resource); } + private void validateRequestDates(DownloadCSVRequest request) { + if (request.getStartDate() != null && request.getEndDate() != null) { + if (request.getStartDate().isAfter(request.getEndDate())) { + throw new IllegalArgumentException("Start date must be before end date"); + } + } + } + + @GetMapping("/listDownloadTypes") - public ResponseEntity listDownloadTypes() - throws FileNotFoundException { + public ResponseEntity> listDownloadTypes() throws FileNotFoundException { + logger.debug("Fetching list of download types..."); + List downloadCSVTypes = apiService.getDownloadTypes(ConfigType.DOWNLOAD_CSV); + logger.debug("Successfully retrieved download types"); return ResponseEntity.ok(downloadCSVTypes); } } diff --git a/config-data-executor/src/main/java/org/micord/exceptions/GlobalExceptionHandler.java b/config-data-executor/src/main/java/org/micord/exceptions/GlobalExceptionHandler.java new file mode 100644 index 0000000..9f560d1 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/exceptions/GlobalExceptionHandler.java @@ -0,0 +1,106 @@ +package org.micord.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.naming.ServiceUnavailableException; +import java.io.FileNotFoundException; +import java.nio.file.AccessDeniedException; +import java.sql.SQLException; +import java.util.Map; +import java.util.NoSuchElementException; + +@RestControllerAdvice +public class GlobalExceptionHandler { + + private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + @ExceptionHandler(SQLException.class) + public ResponseEntity handleSQLException(SQLException e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(Map.of( + "message", "Database error occurred", + "details", e.getMessage() + )); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity handleGeneralException(Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(Map.of( + "message", "Unexpected error occurred", + "details", e.getMessage() + )); + } + + @ExceptionHandler(ValidationException.class) + public ResponseEntity handleValidationException(ValidationException e) { + return ResponseEntity.badRequest().body(Map.of( + "message", "Validation error occurred", + "details", e.getValidationDetails() + )); + } + + @ExceptionHandler(IllegalStateException.class) + public ResponseEntity handleIllegalStateException(IllegalStateException e) { + return ResponseEntity.status(HttpStatus.CONFLICT).body(Map.of( + "message", "Operation cannot be performed due to an invalid state", + "details", e.getMessage() + )); + } + + @ExceptionHandler(AccessDeniedException.class) + public ResponseEntity handleAccessDeniedException(AccessDeniedException e) { + return ResponseEntity.status(HttpStatus.FORBIDDEN).body(Map.of( + "message", "Access denied", + "details", e.getMessage() + )); + } + + @ExceptionHandler(ServiceUnavailableException.class) + public ResponseEntity handleServiceUnavailableException(ServiceUnavailableException e) { + return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body(Map.of( + "message", "Service is temporarily unavailable", + "details", e.getMessage() + )); + } + + @ExceptionHandler(FileNotFoundException.class) + public ResponseEntity handleFileNotFoundException(FileNotFoundException e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Map.of( + "message", "File not found", + "details", e.getMessage() + )); + } + + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity handleIllegalArgumentException(IllegalArgumentException e) { + return ResponseEntity.badRequest().body(Map.of( + "message", "Invalid input provided", + "details", e.getMessage() + )); + } + + @ExceptionHandler(NoSuchElementException.class) + public ResponseEntity handleNoSuchElementException(NoSuchElementException e) { + logger.error("Resource not found: {}", e.getMessage()); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(Map.of( + "message", "Requested resource not found", + "details", e.getMessage() + )); + } + + @ExceptionHandler(RuntimeException.class) + public ResponseEntity handleRuntimeException(RuntimeException e) { + logger.error("Unexpected error occurred: {}", e.getMessage(), e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(Map.of( + "message", "Internal server error", + "details", e.getMessage() + )); + } + + + +} diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index be88d57..4199d8f 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -16,7 +16,13 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.InputSource; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.StringReader; import java.net.HttpURLConnection; import java.net.http.HttpClient; import java.net.http.HttpRequest; @@ -26,7 +32,6 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -42,24 +47,9 @@ public class RequestService { public void processS3Requests(List s3Requests, List ids) { logger.debug("Starting processing of S3 requests"); - if (s3Requests != null && !s3Requests.isEmpty()) { - List> requestFutures = s3Requests.stream() - .map(request -> CompletableFuture.runAsync(() -> { - try { - processS3Request(request, ids); - } catch (Exception e) { - throw new RuntimeException("Error processing S3 request: " + request, e); - } - })) - .toList(); - CompletableFuture.allOf(requestFutures.toArray(new CompletableFuture[0])) - .whenComplete((result, ex) -> { - if (ex != null) { - logger.error("Error processing S3 requests", ex); - throw new RuntimeException("Error processing S3 requests", ex); - } - }); + for (S3Request request : s3Requests) { + processS3Request(request, ids); } } @@ -82,61 +72,75 @@ public class RequestService { } long endExecTime = System.currentTimeMillis(); logger.debug("Paths fetched in {} ms", endExecTime - startExecTime); - } - catch (SQLException e) { - logger.error("Failed to execute query for RequestArgument", e); - throw new RuntimeException("Error executing database query: " + argument.getRequestArgumentURL(), e); + } catch (SQLException e) { + logger.error("Failed to execute query for RequestArgument: {}", argument.getRequestArgumentURL(), e); + throw new RuntimeException("Database query error for argument: " + argument.getRequestArgumentURL(), e); } } } if (files.isEmpty()) { logger.warn("No files found for S3 request"); - throw new RuntimeException("No files found for S3 request"); + throw new NoSuchElementException("No files found for S3 request"); } - files.forEach(file -> { - HttpRequest httpRequest; - logger.debug("Starting building HTTP request for S3 request"); - long startExecTime = System.currentTimeMillis(); - - if (file == null || file.isBlank()) { - logger.warn("Skipping invalid file path: {}", file); - throw new RuntimeException("Invalid file path"); - } + for (String file : files) { try { - httpRequest = S3HttpConnection.buildHttpRequest(request, file); + processFileForS3Request(request, file); + } catch (RuntimeException e) { + logger.error("Error processing file: {}", file, e); + throw e; // Rethrow to propagate for exception handling } - catch (Exception e) { - throw new RuntimeException(e); - } - long endExecTime = System.currentTimeMillis(); - logger.debug("HTTP request built in {} ms", endExecTime - startExecTime); + } - httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofString()) - .thenAccept(response -> { - if (response.statusCode() == HttpURLConnection.HTTP_NO_CONTENT - || response.statusCode() == HttpURLConnection.HTTP_OK) { - logger.info("Successfully deleted object {}", file); - } - else { - logger.error("Failed to delete object {}. Response code: {}", file, - response.statusCode() - ); - } - }) - .exceptionally(ex -> { - logger.error("Failed to delete object {}", file, ex); - return null; - }); - }); - - } - catch (Exception e) { + } catch (Exception e) { logger.error("Failed to process S3 request: {}", request, e); + throw e; // Rethrow exception to propagate to the handler } } + private void processFileForS3Request(S3Request request, String file) { + if (file == null || file.isBlank()) { + logger.warn("Skipping invalid file path: {}", file); + throw new RuntimeException("Invalid file path"); + } + + try { + logger.debug("Starting building HTTP request for file: {}", file); + long startExecTime = System.currentTimeMillis(); + HttpRequest httpRequest = S3HttpConnection.buildHttpRequest(request, file); + long endExecTime = System.currentTimeMillis(); + logger.debug("HTTP request built in {} ms for file: {}", endExecTime - startExecTime, file); + + HttpResponse response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString()); + if (response.statusCode() == HttpURLConnection.HTTP_NO_CONTENT || response.statusCode() == HttpURLConnection.HTTP_OK) { + logger.info("Successfully deleted object {}", file); + } else { + handleErrorResponse(response, file); + } + } catch (Exception e) { + logger.error("Error sending HTTP request for file: {}", file, e); + throw new RuntimeException("HTTP request error for file: " + file, e); + } + } + + private void handleErrorResponse(HttpResponse response, String file) { + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + InputSource is = new InputSource(new StringReader(response.body())); + Document doc = builder.parse(is); + Element root = doc.getDocumentElement(); + String message = root.getElementsByTagName("Message").item(0).getTextContent(); + logger.error("Failed to delete object {}. Response code: {}. Error message: {}", file, response.statusCode(), message); + throw new RuntimeException("Failed to delete object: " + file); + } catch (Exception e) { + logger.error("Failed to parse error response for file {}", file, e); + throw new RuntimeException("Error parsing HTTP response: " + response.body(), e); + } + } + + @Transactional public void processSqlAndAqlRequests(Requests config, List ids) { logger.debug("Starting transactional processing of requests"); @@ -151,7 +155,9 @@ public class RequestService { processAqlRequests(request, ids); } } - processS3Requests(config.getS3Requests(), ids); + if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { + processS3Requests(config.getS3Requests(), ids); + } } private void processSqlRequests(SqlRequest request, List ids) { From bec6f249b0070d0f005fec89d2a3a9c45bebd712 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 17 Dec 2024 07:36:57 +0100 Subject: [PATCH 029/134] Add loggers --- .../org/micord/service/RequestService.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 4199d8f..ec50349 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -33,6 +33,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; /** * @author Maksim Tereshin @@ -46,7 +47,7 @@ public class RequestService { private HttpClient httpClient; public void processS3Requests(List s3Requests, List ids) { - logger.debug("Starting processing of S3 requests"); + logger.info("A. Starting processing of S3 requests"); for (S3Request request : s3Requests) { processS3Request(request, ids); @@ -54,6 +55,7 @@ public class RequestService { } private void processS3Request(S3Request request, List ids) { + logger.info("B. Starting processing of single S3 request"); try { List files = new ArrayList<>(); @@ -63,10 +65,17 @@ public class RequestService { argument.getRequestArgumentConnectionParams())) { Map query = buildSqlQueryForS3(argument.getRequestArgumentURL(), ids); + logger.info("C. Calling query {} for ids {}: ", query.get("requestURL"), ids); logger.debug("Starting fetching paths from database for S3 request"); long startExecTime = System.currentTimeMillis(); List result = fetchFileListFromDatabaseSQL(connection, (String) query.get("requestURL")); + String formattedResult = IntStream.range(0, result.size()) + .mapToObj(i -> (i + 1) + ". " + result.get(i)) + .collect(Collectors.joining("\n")); + + logger.info("D. Found files for query {}:\n{}", query.get("requestURL"), formattedResult); + if (result != null && !result.isEmpty()) { files.addAll(result); } @@ -79,12 +88,19 @@ public class RequestService { } } + String formattedFiles = IntStream.range(0, files.size()) + .mapToObj(i -> (i + 1) + ". " + files.get(i)) + .collect(Collectors.joining("\n")); + + logger.info("E. Found files for ids {}:\n{}", ids, formattedFiles); + if (files.isEmpty()) { logger.warn("No files found for S3 request"); throw new NoSuchElementException("No files found for S3 request"); } for (String file : files) { + logger.info("F. Starting query S3 for file: {}", file); try { processFileForS3Request(request, file); } catch (RuntimeException e) { From 5ccc097048d16f6e91346d0de060091dcfe35bf7 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 17 Dec 2024 10:18:57 +0100 Subject: [PATCH 030/134] Modify behaviour if files not found --- .../org/micord/service/RequestService.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index ec50349..3bc4afa 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -95,18 +95,19 @@ public class RequestService { logger.info("E. Found files for ids {}:\n{}", ids, formattedFiles); if (files.isEmpty()) { - logger.warn("No files found for S3 request"); - throw new NoSuchElementException("No files found for S3 request"); - } + logger.warn("No files found for S3 request {}", request); + } else { - for (String file : files) { - logger.info("F. Starting query S3 for file: {}", file); - try { - processFileForS3Request(request, file); - } catch (RuntimeException e) { - logger.error("Error processing file: {}", file, e); - throw e; // Rethrow to propagate for exception handling + for (String file : files) { + logger.info("F. Starting query S3 for file: {}", file); + try { + processFileForS3Request(request, file); + } catch (RuntimeException e) { + logger.error("Error processing file: {}", file, e); + throw e; // Rethrow to propagate for exception handling + } } + } } catch (Exception e) { From fa78bf48556981e86499d70821d596283f520069 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 18 Dec 2024 08:51:52 +0100 Subject: [PATCH 031/134] Add new api method --- .../org/micord/controller/ApiController.java | 49 ++++++--- .../java/org/micord/enums/ConfigType.java | 3 +- ...CSVRequest.java => RequestParameters.java} | 4 +- .../java/org/micord/service/ApiService.java | 10 +- .../org/micord/service/RequestService.java | 100 ++++++++++-------- 5 files changed, 100 insertions(+), 66 deletions(-) rename config-data-executor/src/main/java/org/micord/models/requests/{DownloadCSVRequest.java => RequestParameters.java} (76%) diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 53ff3f8..87b4154 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -1,8 +1,7 @@ package org.micord.controller; import org.micord.enums.ConfigType; -import org.micord.exceptions.ValidationException; -import org.micord.models.requests.DownloadCSVRequest; +import org.micord.models.requests.RequestParameters; import org.micord.service.ApiService; import org.micord.service.ValidationService; import org.slf4j.Logger; @@ -11,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -22,7 +20,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.sql.SQLException; import java.util.List; -import java.util.Map; +import java.util.Optional; /** * REST Controller for API operations. @@ -40,23 +38,40 @@ public class ApiController { private ValidationService validationService; @PostMapping("/block") - public ResponseEntity block(@RequestBody List ids) throws SQLException, FileNotFoundException { + public ResponseEntity block(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + + List ids = request.getIds(); validationService.validateAll(ids); logger.debug("Starting block process for ids: {}", ids); - apiService.process(ConfigType.BLOCK, ids); + apiService.process(ConfigType.BLOCK, request); logger.debug("Finished block process for ids: {}", ids); return ResponseEntity.ok("Операция \"Блокировка\" завершена успешно."); } + @PostMapping("/removeMilitaryDraftNotices") + public ResponseEntity removeMilitaryDraftNotices(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + + List ids = request.getIds(); + validationService.validateAll(ids); + + logger.debug("Starting removeMilitaryDraftNotices process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_MILITARY_DRAFT_NOTICES, request); + logger.debug("Finished removeMilitaryDraftNotices process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Удаление повесток\" завершена успешно."); + } + @PostMapping("/unblock") - public ResponseEntity unblock(@RequestBody List ids) throws SQLException, FileNotFoundException { + public ResponseEntity unblock(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + + List ids = request.getIds(); validationService.validateAll(ids); logger.debug("Starting unblock process for ids: {}", ids); - apiService.process(ConfigType.UNBLOCK, ids); + apiService.process(ConfigType.UNBLOCK, request); logger.debug("Finished unblock process for ids: {}", ids); return ResponseEntity.ok("Операция \"Разблокировка\" завершена успешно."); @@ -64,11 +79,12 @@ public class ApiController { @PostMapping("/removeFromSystem") - public ResponseEntity removeFromSystem(@RequestBody List ids) throws SQLException, FileNotFoundException { + public ResponseEntity removeFromSystem(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + List ids = request.getIds(); validationService.validateAll(ids); logger.debug("Starting removeFromSystem process for ids: {}", ids); - apiService.process(ConfigType.REMOVE_FROM_SYSTEM, ids); + apiService.process(ConfigType.REMOVE_FROM_SYSTEM, request); logger.debug("Finished removeFromSystem process for ids: {}", ids); return ResponseEntity.ok("Операция \"Удаление данных по гражданину\" завершена успешно."); @@ -76,11 +92,12 @@ public class ApiController { @PostMapping("/removeFromCallList") - public ResponseEntity removeFromCallList(@RequestBody List ids) throws SQLException, FileNotFoundException { + public ResponseEntity removeFromCallList(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + List ids = request.getIds(); validationService.validateAll(ids); logger.debug("Starting removeFromCallList process for ids: {}", ids); - apiService.process(ConfigType.REMOVE_FROM_CALL_LIST, ids); + apiService.process(ConfigType.REMOVE_FROM_CALL_LIST, request); logger.debug("Finished removeFromCallList process for ids: {}", ids); return ResponseEntity.ok("Операция \"Удаление из списков на вызов\" завершена успешно."); @@ -88,15 +105,15 @@ public class ApiController { @PostMapping("/downloadCSV") - public ResponseEntity downloadCSV(@RequestBody DownloadCSVRequest request) throws IOException { - logger.debug("Starting downloadCSV process for request: {}", request.getType()); + public ResponseEntity downloadCSV(@RequestBody RequestParameters request) throws IOException { + logger.debug("Starting downloadCSV process for request: {}", request.getDownloadType()); validateRequestDates(request); File csvFile = apiService.download(ConfigType.DOWNLOAD_CSV, request); InputStreamResource resource = new InputStreamResource(new FileInputStream(csvFile)); - logger.debug("Finished downloadCSV process for request: {}. Sending to user...", request.getType()); + logger.debug("Finished downloadCSV process for request: {}. Sending to user...", request.getDownloadType()); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + csvFile.getName()) @@ -105,7 +122,7 @@ public class ApiController { .body(resource); } - private void validateRequestDates(DownloadCSVRequest request) { + private void validateRequestDates(RequestParameters request) { if (request.getStartDate() != null && request.getEndDate() != null) { if (request.getStartDate().isAfter(request.getEndDate())) { throw new IllegalArgumentException("Start date must be before end date"); diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java index 3ff1925..977c7a5 100644 --- a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -10,7 +10,8 @@ public enum ConfigType { REMOVE_FROM_SYSTEM("removeFromSystem"), REMOVE_FROM_CALL_LIST("removeFromCallList"), DOWNLOAD_CSV("downloadCSV"), - VALIDATE_BLOCK("validateBlock"); + VALIDATE_BLOCK("validateBlock"), + REMOVE_MILITARY_DRAFT_NOTICES("removeMilitaryDraftNotices"); private final String type; diff --git a/config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java b/config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java similarity index 76% rename from config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java rename to config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java index 920bf18..b2545d4 100644 --- a/config-data-executor/src/main/java/org/micord/models/requests/DownloadCSVRequest.java +++ b/config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java @@ -7,8 +7,8 @@ import java.time.LocalDate; import java.util.List; @Data -public class DownloadCSVRequest { - private String type; +public class RequestParameters { + private String downloadType; private List ids; private LocalDate startDate; private LocalDate endDate; diff --git a/config-data-executor/src/main/java/org/micord/service/ApiService.java b/config-data-executor/src/main/java/org/micord/service/ApiService.java index 97e5c6c..e0fbdd2 100644 --- a/config-data-executor/src/main/java/org/micord/service/ApiService.java +++ b/config-data-executor/src/main/java/org/micord/service/ApiService.java @@ -1,7 +1,7 @@ package org.micord.service; import org.micord.enums.ConfigType; -import org.micord.models.requests.DownloadCSVRequest; +import org.micord.models.requests.RequestParameters; import org.micord.models.requests.DownloadRequest; import org.micord.models.requests.Requests; import org.slf4j.Logger; @@ -30,15 +30,15 @@ public class ApiService { @Autowired private ConfigService configService; - public void process(ConfigType methodName, List ids) throws FileNotFoundException { + public void process(ConfigType methodName, RequestParameters parameters) throws FileNotFoundException { Requests config = configService.getConfig(methodName, Requests.class); - sqlAndAqlService.processSqlAndAqlRequests(config, ids); + sqlAndAqlService.processSqlAndAqlRequests(config, parameters); } - public File download(ConfigType methodName, DownloadCSVRequest request) throws IOException { + public File download(ConfigType methodName, RequestParameters request) throws IOException { Requests config = configService.getConfig(methodName, Requests.class); - String type = request.getType(); + String type = request.getDownloadType(); List ids = Optional.ofNullable(request.getIds()) .filter(list -> !list.isEmpty()) .orElse(null); diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 3bc4afa..52e29ba 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -31,6 +31,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -46,25 +47,26 @@ public class RequestService { @Autowired private HttpClient httpClient; - public void processS3Requests(List s3Requests, List ids) { + public void processS3Requests(List s3Requests, RequestParameters parameters) { logger.info("A. Starting processing of S3 requests"); for (S3Request request : s3Requests) { - processS3Request(request, ids); + processS3Request(request, parameters); } } - private void processS3Request(S3Request request, List ids) { + private void processS3Request(S3Request request, RequestParameters parameters) { logger.info("B. Starting processing of single S3 request"); try { List files = new ArrayList<>(); + List ids = parameters.getIds(); if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { for (RequestArgument argument : request.getRequestArguments()) { try (Connection connection = DatabaseConnection.getConnection( argument.getRequestArgumentConnectionParams())) { - Map query = buildSqlQueryForS3(argument.getRequestArgumentURL(), ids); + Map query = buildSqlQueryForS3(argument.getRequestArgumentURL(), parameters); logger.info("C. Calling query {} for ids {}: ", query.get("requestURL"), ids); logger.debug("Starting fetching paths from database for S3 request"); long startExecTime = System.currentTimeMillis(); @@ -159,27 +161,30 @@ public class RequestService { @Transactional - public void processSqlAndAqlRequests(Requests config, List ids) { - logger.debug("Starting transactional processing of requests"); - if (config.getSqlRequests() != null) { - for (SqlRequest request : config.getSqlRequests()) { - processSqlRequests(request, ids); - } + public void processSqlAndAqlRequests(Requests config, RequestParameters parameters) { + logger.info("Starting transactional processing of requests"); + + if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { + processS3Requests(config.getS3Requests(), parameters); } if (config.getAqlRequests() != null) { for (AqlRequest request : config.getAqlRequests()) { - processAqlRequests(request, ids); + processAqlRequests(request, parameters); } } - if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { - processS3Requests(config.getS3Requests(), ids); + + if (config.getSqlRequests() != null) { + for (SqlRequest request : config.getSqlRequests()) { + processSqlRequests(request, parameters); + } } } - private void processSqlRequests(SqlRequest request, List ids) { + private void processSqlRequests(SqlRequest request, RequestParameters parameters) { logger.debug("Starting transactional processing of SQL requests"); - Map query = buildSqlQuery(request, ids); + Map query = buildSqlQuery(request, parameters); + List ids = parameters.getIds(); logger.debug("Opening connection for SQL Request: {}", request.getRequestURL()); long startExecTime = System.currentTimeMillis(); try (Connection connection = DatabaseConnection.getConnection( @@ -204,21 +209,13 @@ public class RequestService { } } - private Map buildSqlQueryForS3(String requestURL, List ids) { - logger.debug("Starting building SQL query for request: {}", requestURL); + private Map buildSqlQueryForS3(String url, RequestParameters parameters) { + logger.debug("Starting building SQL query for request: {}", url); long startExecTime = System.currentTimeMillis(); Map resultMap = new HashMap<>(); - String endpointArguments; - if (requestURL.contains(":=")) { - endpointArguments = "'{" + ids.stream() - .map(String::trim) - .collect(Collectors.joining(", ")) + "}'"; - } else { - endpointArguments = "(" + ids.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; - } + String requestURL = prepareDatesFilterInRequestURL(url, parameters.getStartDate(), parameters.getEndDate()); + String endpointArguments = replaceEndpointArgumentsInQuery(parameters, requestURL); resultMap.put("requestURL", requestURL .replace("${endpointArguments}", endpointArguments)); @@ -229,23 +226,26 @@ public class RequestService { return resultMap; } - private Map buildSqlQuery(BaseRequest request, List ids) { + private String prepareDatesFilterInRequestURL(String requestURL, LocalDate startDate, LocalDate endDate) { + + if (startDate != null) { + requestURL = requestURL.replace("${startDate}", startDate.toString()); + } + + if (endDate != null) { + requestURL = requestURL.replace("${endDate}", endDate.toString()); + } + + return requestURL; + } + + private Map buildSqlQuery(BaseRequest request, RequestParameters parameters) { logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); long startExecTime = System.currentTimeMillis(); Map resultMap = new HashMap<>(); String endpointArguments; - - String requestURL = request.getRequestURL(); - - if (requestURL.contains(":=")) { - endpointArguments = "'{" + ids.stream() - .map(String::trim) - .collect(Collectors.joining(", ")) + "}'"; - } else { - endpointArguments = "(" + ids.stream() - .map(s -> "'" + s.trim() + "'") - .collect(Collectors.joining(", ")) + ")"; - } + String requestURL = prepareDatesFilterInRequestURL(request.getRequestURL(), parameters.getStartDate(), parameters.getEndDate()); + endpointArguments = replaceEndpointArgumentsInQuery(parameters, requestURL); if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { for (RequestArgument argument : request.getRequestArguments()) { @@ -286,6 +286,22 @@ public class RequestService { return resultMap; } + private String replaceEndpointArgumentsInQuery(RequestParameters parameters, String requestURL) { + String endpointArguments; + List ids = parameters.getIds(); + + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } + return endpointArguments; + } + private boolean executeSqlQuery(Connection connection, String query) throws SQLException { try (PreparedStatement stmt = connection.prepareStatement(query)) { @@ -305,7 +321,7 @@ public class RequestService { return results; } - private void processAqlRequests(AqlRequest request, List ids) { + private void processAqlRequests(AqlRequest request, RequestParameters parameters) { ArangoDatabase arangoDb = ArangoDBConnection.getConnection(request.getAqlConnectionParams()); // TODO: implement for multiple request arguments @@ -327,7 +343,7 @@ public class RequestService { logger.info("Stream transaction started with ID: {}", transactionId); - Map entities = executeSelectAqlRequest(arangoDb, requestArgument, ids, transactionId); + Map entities = executeSelectAqlRequest(arangoDb, requestArgument, parameters.getIds(), transactionId); if (entities.isEmpty()) { logger.warn("No entities found for main AQL request."); From df7574e73e76f051e49a9c49d661c305d84ab398 Mon Sep 17 00:00:00 2001 From: Makarova Elena Date: Wed, 18 Dec 2024 14:01:31 +0300 Subject: [PATCH 032/134] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=20ERVU-226?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/business-model/main.page | 651 ++++++++++++++++-- 1 file changed, 608 insertions(+), 43 deletions(-) diff --git a/resources/src/main/resources/business-model/main.page b/resources/src/main/resources/business-model/main.page index 2f90ec3..51cacb3 100644 --- a/resources/src/main/resources/business-model/main.page +++ b/resources/src/main/resources/business-model/main.page @@ -71,6 +71,7 @@ 8497ae79-a2e4-4c50-aac1-b7a6c522d104 Исключение из списков на вызов true + false false @@ -887,7 +888,6 @@ d07c1fdd-b0c2-4c06-bc2f-eb5de174f5db Hbox true - false false @@ -974,11 +974,568 @@ true + + 84b784bf-7bec-42f5-bbb7-8a465de45019 + 350e6ccf-4962-4ef4-b4eb-7ed5f7037ddf + Удаление повесток + true + false + + + + heading + + "Удаление повесток" + + + + + + + + service + + +BpmnDefaultValueLoaderServiceImpl +service.loading + + + + + + + + + + d7d54cfb-26b5-4dba-b56f-b6247183c24d + c23d9367-c06d-4025-a97a-d0b84b062e0e + Hbox + true + false + + + + + + + b310f98a-69c6-4e7b-8cdb-f1ab9f9c0d94 + 074eb1ba-30e3-47f7-a289-11238b21d92b + Combo box тип выгрузки + false + true + + + c6a4e38d-d0b3-46dd-960b-36c7e8beba36 + 760f5cd0-5b6d-4939-ba1c-5fd9bb61f95c + Дата с + false + false + + + +cssClasses + + + + + "free-label" + + + + + + +dateValueFormat + + "DATE" + + + +label + + "Дата с" + + + + + + + + + false + + + + c6a4e38d-d0b3-46dd-960b-36c7e8beba36 + da2d6408-1e95-4c10-8418-9786928e5167 + по + false + false + + + +cssClasses + + + + + "free-label" + + + + + + +dateValueFormat + + "DATE" + + + +label + + "по" + + + + + + + + + false + + + + + 69af9ec9-d640-499a-bf05-cda6ce64a81f + ce8669b8-8869-450c-bb9d-e474075c7622 + ИД ЕРН_delete + false + false + + + + cssClasses + + + + "width-full" + + + + + + errorTooltipStyle + + + + height + + null + + + +false + + + + label + +"ИД ЕРН" + + + + style + + + + height + + "200px" + + + + + + + + + + + + false + + + + 57c7cd21-1556-4dbd-b9da-33520486a1db + 6a60d344-4886-4a98-9cde-7ee28d062773 + SQL Получить ИД ЕРВУ граждан del + false + false + + + + caption + +"Получить ИД ЕРВУ граждан" + + + + + + + + queryParams + + + + + + objectValue + + + + argument + +null + + + + behavior + +{"objectId":"ce8669b8-8869-450c-bb9d-e474075c7622","packageName":"component.field","className":"TextArea","type":"TS"} + + + + method + +"getValue" + + + + + + + + + + + + + + + + + + executeSqlButtonService + + + + jndiName + + "java:/webbpm/personRegistryDS" + + + + sql + + "select \u0027{\u0027||string_agg(\u0027\"\u0027||id::text||\u0027\"\u0027,\u0027,\u0027)||\u0027}\u0027\nfrom recruits\nwhere system_id_ern \u003d any(string_to_array(trim(trailing \u0027,\u0027 from replace(replace(replace (?, \u0027\\n\u0027, E\u0027\\n\u0027),chr(13),\u0027\u0027),chr(10),\u0027,\u0027)),\u0027,\u0027))" + + + + + ReadOnlySqlButtonServiceImpl + ru.micord.ervu_eks.component.service + + + + + + + + 69af9ec9-d640-499a-bf05-cda6ce64a81f + a462ac66-85d2-4d7c-957b-a0837c2fd94a + ИД ЕРВУ удаляемых граждан_delete + false + false + + + + cssClasses + + + + "width-full" + + + + + + errorTooltipStyle + + + + height + + null + + + +false + + + + label + +"ИД ЕРВУ граждан для удаления повесток" + + + + style + + + + height + + "200px" + + + + + + + + + + + + false + + + + SaveValueToVariable + modules.bpmn.script + + true + true + + + variable + +"delete_ids_string" + + + + + + + 98594cec-0a9b-4cef-af09-e1b71cb2ad9e + 70593dce-28cd-4ced-86f3-91c9627100d6 + AC_get_id + false + false + + + + eventRefs + + + + + + behavior + + {"objectId":"6a60d344-4886-4a98-9cde-7ee28d062773","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} + + + + propertyName + + "clickEvent" + + + + + + + + + ifCondition + + + + logicalOperation + + null + + + + + + + thenActions + + + + + + behavior + + {"objectId":"a462ac66-85d2-4d7c-957b-a0837c2fd94a","packageName":"component.field","className":"TextArea","type":"TS"} + + + + method + + "setValue" + + + + value + + + + objectValue + + + + argument + + null + + + + behavior + + {"objectId":"6a60d344-4886-4a98-9cde-7ee28d062773","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} + + + + method + + "getResult" + + + + + + + + + + + + + + + + + + + c8dfe691-a84a-48da-b79e-6298d90db71d + 6092b699-d5e7-4e4a-a4b7-542d1b01a670 + Navigation Удалить данные по гражданам + false + true + + + d7d54cfb-26b5-4dba-b56f-b6247183c24d + ca3e7a27-ab0e-42f4-acf3-92dd5a20993d + Hbox + true + false + + + + + service + + + BpmnDefaultValueLoaderServiceImpl + service.loading + + + + + + + + + + 67d2e469-003f-48d1-99a5-bdd27bb36d58 + 8a67b346-22ec-4795-95be-0972a588b2df + ConfigExecuteButton Удалить данные по повесткам + false + false + + + +caption + + "Удалить повестки" + + + +ervuIdField + + {"objectId":"a462ac66-85d2-4d7c-957b-a0837c2fd94a","packageName":"component.field","className":"TextArea","type":"TS"} + + + +methodPath + + "/removeMilitaryDraftNotices" + + + + + + + + c8dfe691-a84a-48da-b79e-6298d90db71d + bbd82ff1-d1b3-4531-81be-89f11896d358 + Выход + false + false + + + +caption + + "Выход" + + + +cssClasses + + + + + +navigateTo + + "exit" + + + + + + + + fd7e47b9-dce1-4d14-9f3a-580c79f59579 + c0f889a5-11ef-4891-a430-e153d187fbd4 + Удалить граждан из списков вызова + false + true + + 84b784bf-7bec-42f5-bbb7-8a465de45019 62666192-d5b8-4c04-a487-10285ceb39d1 Блокировка граждан true + false false @@ -1440,6 +1997,7 @@ 6bcec242-d2fe-4832-8e54-1016c92d2f68 Разблокировка граждан true + false false @@ -2217,6 +2775,52 @@ + + b310f98a-69c6-4e7b-8cdb-f1ab9f9c0d94 + a0470f7b-62f6-4aea-a67d-db623edf1510 + Combo box тип выгрузки + false + false + + + + cssClasses + + + + "width-full" + + + + + + label + +"Тип выгрузки" + + + + + + + + comboBoxService + + + DataTypeComboBoxService + service + + + + + + + + + + false + + d7d54cfb-26b5-4dba-b56f-b6247183c24d 73ab9520-d8a4-416e-b019-e34ebdda783a @@ -2233,36 +2837,7 @@ a0470f7b-62f6-4aea-a67d-db623edf1510 Combo box тип выгрузки false - false - - - -label - - "Тип выгрузки" - - - - - - - -comboBoxService - - - DataTypeComboBoxService - service - - - - - - - - - - false - + true c6a4e38d-d0b3-46dd-960b-36c7e8beba36 @@ -2275,12 +2850,9 @@ cssClasses + - - - "free-label" - - + @@ -2347,13 +2919,6 @@ - - b310f98a-69c6-4e7b-8cdb-f1ab9f9c0d94 - a0470f7b-62f6-4aea-a67d-db623edf1510 - Combo box тип выгрузки - false - true - 69af9ec9-d640-499a-bf05-cda6ce64a81f 6ed0af05-7498-4734-9363-313615e4600c From dc67e681dd8426e6683ef002871b89a2e10d824b Mon Sep 17 00:00:00 2001 From: Alexandr Shalaginov Date: Wed, 18 Dec 2024 15:35:27 +0300 Subject: [PATCH 033/134] ERVU-226: add start/end dates in ConfigExecuteBtn.ts --- .../main/java/dto/ConfigExecuteRequest.java | 48 +++++++++++++++++++ .../java/rpc/ConfigExecutorRpcService.java | 7 ++- .../java/service/ConfigExecutorService.java | 22 ++++----- frontend/src/ts/ervu/ConfigExecuteBtn.ts | 25 ++++++++-- 4 files changed, 83 insertions(+), 19 deletions(-) create mode 100644 backend/src/main/java/dto/ConfigExecuteRequest.java diff --git a/backend/src/main/java/dto/ConfigExecuteRequest.java b/backend/src/main/java/dto/ConfigExecuteRequest.java new file mode 100644 index 0000000..4553afe --- /dev/null +++ b/backend/src/main/java/dto/ConfigExecuteRequest.java @@ -0,0 +1,48 @@ +package dto; + +import java.time.LocalDate; +import java.util.List; + +/** + * @author Alexandr Shalaginov + */ +public class ConfigExecuteRequest { + public List ids; + + public LocalDate startDate; + + public LocalDate endDate; + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + + public LocalDate getEndDate() { + return endDate; + } + + public void setEndDate(LocalDate endDate) { + this.endDate = endDate; + } + + @Override + public String toString() { + return "ConfigExecuteRequest{" + + "ids=" + ids + + ", startDate=" + startDate + + ", endDate=" + endDate + + '}'; + } +} diff --git a/backend/src/main/java/rpc/ConfigExecutorRpcService.java b/backend/src/main/java/rpc/ConfigExecutorRpcService.java index ad8ba1c..9c52623 100644 --- a/backend/src/main/java/rpc/ConfigExecutorRpcService.java +++ b/backend/src/main/java/rpc/ConfigExecutorRpcService.java @@ -1,7 +1,6 @@ package rpc; -import java.util.List; - +import dto.ConfigExecuteRequest; import org.springframework.beans.factory.annotation.Autowired; import service.ConfigExecutorService; @@ -22,7 +21,7 @@ public class ConfigExecutorRpcService extends Behavior { } @RpcCall - public String callConfigExecutor(String methodPath, List ids) { - return configExecutorService.call(methodPath, ids); + public String callConfigExecutor(String methodPath, ConfigExecuteRequest configExecuteRequest) { + return configExecutorService.call(methodPath, configExecuteRequest); } } diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index 4a92b8e..1d000e7 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -8,10 +8,10 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.stream.Collectors; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; +import dto.ConfigExecuteRequest; import dto.ExportDataRequest; import model.FileModel; import org.slf4j.Logger; @@ -63,19 +63,19 @@ public class ConfigExecutorService { return fileModel; } - public String call(String methodPath, List ids) { + public String call(String methodPath, ConfigExecuteRequest configExecuteRequest) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity> entity = new HttpEntity<>(ids, headers); - LOGGER.info("Starts call config executor service with method: {}, for ids: {}", methodPath, - ids + HttpEntity entity = new HttpEntity<>(configExecuteRequest, headers); + LOGGER.info("Starts call config executor service with method: {}, for request: {}", methodPath, + configExecuteRequest ); try { ResponseEntity response = restTemplate.exchange(url.concat(methodPath), HttpMethod.POST, entity, String.class ); - LOGGER.info("Method: {}, executed with status: {}, for ids:{}", methodPath, - response.getStatusCode().value(), ids + LOGGER.info("Method: {}, executed with status: {}, for request:{}", methodPath, + response.getStatusCode().value(), configExecuteRequest ); return response.getBody(); } @@ -94,15 +94,15 @@ public class ConfigExecutorService { } else { throw new RuntimeException( - String.format("Failed call config executor service method: %s for ids: %s with error", - methodPath, ids + String.format("Failed call config executor service method: %s for request: %s with error", + methodPath, configExecuteRequest ), e); } } catch (Exception e) { throw new RuntimeException( - String.format("Failed call config executor service method: %s for ids: %s with error", - methodPath, ids + String.format("Failed call config executor service method: %s for request: %s with error", + methodPath, configExecuteRequest ), e); } } diff --git a/frontend/src/ts/ervu/ConfigExecuteBtn.ts b/frontend/src/ts/ervu/ConfigExecuteBtn.ts index 9c0f0b6..eeb6da0 100644 --- a/frontend/src/ts/ervu/ConfigExecuteBtn.ts +++ b/frontend/src/ts/ervu/ConfigExecuteBtn.ts @@ -1,6 +1,14 @@ import {ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef} from "@angular/core"; -import {AbstractButton, MessagesService, NotNull, ObjectRef, TextArea} from "@webbpm/base-package"; +import { + AbstractButton, + DateTimePicker, + MessagesService, + NotNull, + ObjectRef, + TextArea +} from "@webbpm/base-package"; import {ConfigExecutorRpcService} from "../generated/rpc/ConfigExecutorRpcService"; +import {ConfigExecuteRequest} from "../generated/dto/ConfigExecuteRequest"; /** * @author: a.petrov @@ -16,6 +24,10 @@ export class ConfigExecuteBtn extends AbstractButton { @ObjectRef() @NotNull() public ervuIdField: TextArea; + @ObjectRef() + public startDate: DateTimePicker; + @ObjectRef() + public endDate: DateTimePicker; @NotNull() public methodPath: string; private script: ConfigExecutorRpcService; @@ -32,13 +44,18 @@ export class ConfigExecuteBtn extends AbstractButton { } doClickActions(): Promise { - const value = this.ervuIdField.getValue(); + const value: string = this.ervuIdField.getValue(); if (value && this.methodPath.trim().length !== 0) { - const ids = value.replace(/[{}]/g, '') + const ids: string[] = value.replace(/[{}]/g, '') .split(',') .map(id => id.trim().replace(/"/g, '')); - return this.script.callConfigExecutor(this.methodPath, ids, true) + let configExecuteRequest: ConfigExecuteRequest = new ConfigExecuteRequest(); + configExecuteRequest.ids = ids; + configExecuteRequest.startDate = this.startDate ? this.startDate.getDateValue() : null; + configExecuteRequest.endDate = this.endDate ? this.endDate.getDateValue() : null; + + return this.script.callConfigExecutor(this.methodPath, configExecuteRequest, true) .then(successMsg => this.messagesService.success(successMsg)) .catch(error => Promise.reject(error)); } From 0e131fc247c22934f3b6508072dbbf83b6fa9551 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 18 Dec 2024 13:46:13 +0100 Subject: [PATCH 034/134] Add new api method --- .../org/micord/controller/ApiController.java | 24 ++ .../java/org/micord/enums/ConfigType.java | 1 + .../models/requests/RequestParameters.java | 16 ++ .../java/org/micord/service/ApiService.java | 6 + .../org/micord/service/RequestService.java | 219 ++++++++++++++++++ 5 files changed, 266 insertions(+) create mode 100644 config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 53ff3f8..8fc94f5 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -3,6 +3,7 @@ package org.micord.controller; import org.micord.enums.ConfigType; import org.micord.exceptions.ValidationException; import org.micord.models.requests.DownloadCSVRequest; +import org.micord.models.requests.RequestParameters; import org.micord.service.ApiService; import org.micord.service.ValidationService; import org.slf4j.Logger; @@ -39,6 +40,21 @@ public class ApiController { @Autowired private ValidationService validationService; + @PostMapping("/removeMilitaryDraftNotices") + public ResponseEntity removeMilitaryDraftNotices(@RequestBody RequestParameters request) throws SQLException, FileNotFoundException { + + validateRequestDates(request); + + List ids = request.getIds(); + validationService.validateAll(ids); + + logger.debug("Starting removeMilitaryDraftNotices process for ids: {}", ids); + apiService.process(ConfigType.REMOVE_MILITARY_DRAFT_NOTICES, request); + logger.debug("Finished removeMilitaryDraftNotices process for ids: {}", ids); + + return ResponseEntity.ok("Операция \"Удаление повесток\" завершена успешно."); + } + @PostMapping("/block") public ResponseEntity block(@RequestBody List ids) throws SQLException, FileNotFoundException { validationService.validateAll(ids); @@ -113,6 +129,14 @@ public class ApiController { } } + private void validateRequestDates(RequestParameters request) { + if (request.getStartDate() != null && request.getEndDate() != null) { + if (request.getStartDate().isAfter(request.getEndDate())) { + throw new IllegalArgumentException("Start date must be before end date"); + } + } + } + @GetMapping("/listDownloadTypes") public ResponseEntity> listDownloadTypes() throws FileNotFoundException { diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java index 3ff1925..5ebe34d 100644 --- a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -6,6 +6,7 @@ import lombok.Getter; public enum ConfigType { BLOCK("block"), + REMOVE_MILITARY_DRAFT_NOTICES("removeMilitaryDraftNotices"), UNBLOCK("unblock"), REMOVE_FROM_SYSTEM("removeFromSystem"), REMOVE_FROM_CALL_LIST("removeFromCallList"), diff --git a/config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java b/config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java new file mode 100644 index 0000000..0479158 --- /dev/null +++ b/config-data-executor/src/main/java/org/micord/models/requests/RequestParameters.java @@ -0,0 +1,16 @@ +package org.micord.models.requests; + + +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +@Data +public class RequestParameters { + private String type; + private List ids; + private LocalDate startDate; + private LocalDate endDate; +} + diff --git a/config-data-executor/src/main/java/org/micord/service/ApiService.java b/config-data-executor/src/main/java/org/micord/service/ApiService.java index 97e5c6c..e5b29a4 100644 --- a/config-data-executor/src/main/java/org/micord/service/ApiService.java +++ b/config-data-executor/src/main/java/org/micord/service/ApiService.java @@ -3,6 +3,7 @@ package org.micord.service; import org.micord.enums.ConfigType; import org.micord.models.requests.DownloadCSVRequest; import org.micord.models.requests.DownloadRequest; +import org.micord.models.requests.RequestParameters; import org.micord.models.requests.Requests; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +36,11 @@ public class ApiService { sqlAndAqlService.processSqlAndAqlRequests(config, ids); } + public void process(ConfigType methodName, RequestParameters parameters) throws FileNotFoundException { + Requests config = configService.getConfig(methodName, Requests.class); + sqlAndAqlService.processSqlAndAqlRequests(config, parameters); + } + public File download(ConfigType methodName, DownloadCSVRequest request) throws IOException { Requests config = configService.getConfig(methodName, Requests.class); diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 3bc4afa..7285745 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -31,6 +31,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -54,6 +55,77 @@ public class RequestService { } } + public void processS3Requests(List s3Requests, RequestParameters parameters) { + logger.info("A. Starting processing of S3 requests"); + + for (S3Request request : s3Requests) { + processS3Request(request, parameters); + } + } + + private void processS3Request(S3Request request, RequestParameters parameters) { + logger.info("B. Starting processing of single S3 request"); + try { + List files = new ArrayList<>(); + List ids = parameters.getIds(); + + if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { + for (RequestArgument argument : request.getRequestArguments()) { + try (Connection connection = DatabaseConnection.getConnection( + argument.getRequestArgumentConnectionParams())) { + + Map query = buildSqlQueryForS3(argument.getRequestArgumentURL(), parameters); + logger.info("C. Calling query {} for ids {}: ", query.get("requestURL"), ids); + logger.debug("Starting fetching paths from database for S3 request"); + long startExecTime = System.currentTimeMillis(); + + List result = fetchFileListFromDatabaseSQL(connection, (String) query.get("requestURL")); + String formattedResult = IntStream.range(0, result.size()) + .mapToObj(i -> (i + 1) + ". " + result.get(i)) + .collect(Collectors.joining("\n")); + + logger.info("D. Found files for query {}:\n{}", query.get("requestURL"), formattedResult); + + if (result != null && !result.isEmpty()) { + files.addAll(result); + } + long endExecTime = System.currentTimeMillis(); + logger.debug("Paths fetched in {} ms", endExecTime - startExecTime); + } catch (SQLException e) { + logger.error("Failed to execute query for RequestArgument: {}", argument.getRequestArgumentURL(), e); + throw new RuntimeException("Database query error for argument: " + argument.getRequestArgumentURL(), e); + } + } + } + + String formattedFiles = IntStream.range(0, files.size()) + .mapToObj(i -> (i + 1) + ". " + files.get(i)) + .collect(Collectors.joining("\n")); + + logger.info("E. Found files for ids {}:\n{}", ids, formattedFiles); + + if (files.isEmpty()) { + logger.warn("No files found for S3 request {}", request); + } else { + + for (String file : files) { + logger.info("F. Starting query S3 for file: {}", file); + try { + processFileForS3Request(request, file); + } catch (RuntimeException e) { + logger.error("Error processing file: {}", file, e); + throw e; // Rethrow to propagate for exception handling + } + } + + } + + } catch (Exception e) { + logger.error("Failed to process S3 request: {}", request, e); + throw e; // Rethrow exception to propagate to the handler + } + } + private void processS3Request(S3Request request, List ids) { logger.info("B. Starting processing of single S3 request"); try { @@ -177,6 +249,25 @@ public class RequestService { } } + @Transactional + public void processSqlAndAqlRequests(Requests config, RequestParameters parameters) { + logger.debug("Starting transactional processing of requests"); + if (config.getSqlRequests() != null) { + for (SqlRequest request : config.getSqlRequests()) { + processSqlRequests(request, parameters); + } + } + + if (config.getAqlRequests() != null) { + for (AqlRequest request : config.getAqlRequests()) { + processAqlRequests(request, parameters.getIds()); + } + } + if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { + processS3Requests(config.getS3Requests(), parameters); + } + } + private void processSqlRequests(SqlRequest request, List ids) { logger.debug("Starting transactional processing of SQL requests"); Map query = buildSqlQuery(request, ids); @@ -204,6 +295,34 @@ public class RequestService { } } + private void processSqlRequests(SqlRequest request, RequestParameters parameters) { + logger.debug("Starting transactional processing of SQL requests"); + Map query = buildSqlQuery(request, parameters); + List ids = parameters.getIds(); + logger.debug("Opening connection for SQL Request: {}", request.getRequestURL()); + long startExecTime = System.currentTimeMillis(); + try (Connection connection = DatabaseConnection.getConnection( + request.getSqlConnectionParams())) { + String requestURL = (String) query.get("requestURL"); + executeSqlQuery(connection, requestURL); + + List queryIds = (List) query.get("ids"); + if (queryIds != null && !queryIds.isEmpty()) { + ids.addAll(queryIds); + } else { + logger.warn("No IDs found for the query"); + } + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL request executed in {} ms", endExecTime - startExecTime); + + logger.info("Successfully executed query {} for IDs: ({})", requestURL, String.join(", ", ids)); + } + catch (SQLException e) { + logger.error("SQL execution failed for query: {}", query, e); + throw new RuntimeException("Error executing SQL query", e); + } + } + private Map buildSqlQueryForS3(String requestURL, List ids) { logger.debug("Starting building SQL query for request: {}", requestURL); long startExecTime = System.currentTimeMillis(); @@ -229,6 +348,48 @@ public class RequestService { return resultMap; } + private Map buildSqlQueryForS3(String url, RequestParameters parameters) { + logger.debug("Starting building SQL query for request: {}", url); + long startExecTime = System.currentTimeMillis(); + Map resultMap = new HashMap<>(); + String endpointArguments; + + String requestURL = prepareDatesFilterInRequestURL(url, parameters.getStartDate(), parameters.getEndDate()); + + List ids = parameters.getIds(); + + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } + + resultMap.put("requestURL", requestURL + .replace("${endpointArguments}", endpointArguments)); + + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL query for S3 built in {} ms", endExecTime - startExecTime); + + return resultMap; + } + + private String prepareDatesFilterInRequestURL(String requestURL, LocalDate startDate, LocalDate endDate) { + + if (startDate != null) { + requestURL = requestURL.replace("${startDate}", startDate.toString()); + } + + if (endDate != null) { + requestURL = requestURL.replace("${endDate}", endDate.toString()); + } + + return requestURL; + } + private Map buildSqlQuery(BaseRequest request, List ids) { logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); long startExecTime = System.currentTimeMillis(); @@ -286,6 +447,64 @@ public class RequestService { return resultMap; } + private Map buildSqlQuery(BaseRequest request, RequestParameters parameters) { + logger.debug("Starting building SQL query for request: {}", request.getRequestURL()); + long startExecTime = System.currentTimeMillis(); + Map resultMap = new HashMap<>(); + String endpointArguments; + + String requestURL = prepareDatesFilterInRequestURL(request.getRequestURL(), parameters.getStartDate(), parameters.getEndDate()); + List ids = parameters.getIds(); + + if (requestURL.contains(":=")) { + endpointArguments = "'{" + ids.stream() + .map(String::trim) + .collect(Collectors.joining(", ")) + "}'"; + } else { + endpointArguments = "(" + ids.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + } + + if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) { + for (RequestArgument argument : request.getRequestArguments()) { + + if (argument.getRequestArgumentConnectionParams() != null) { + logger.debug("Opening connection for SQL RequestArgument: {}", argument.getRequestArgumentName()); + try (Connection connection = DatabaseConnection.getConnection( + argument.getRequestArgumentConnectionParams())) { + String query = argument.getRequestArgumentURL(); + List result = fetchFileListFromDatabaseSQL(connection, query); + + resultMap.put("ids", result); + + + if (result != null && !result.isEmpty()) { + String resultSet = "(" + result.stream() + .map(s -> "'" + s.trim() + "'") + .collect(Collectors.joining(", ")) + ")"; + + requestURL = requestURL.replace("${" + argument.getRequestArgumentName() + "}", resultSet); + + } + + } + catch (SQLException e) { + logger.error("Failed to execute query for RequestArgument", e); + } + } + } + } + + resultMap.put("requestURL", requestURL + .replace("${endpointArguments}", endpointArguments)); + + long endExecTime = System.currentTimeMillis(); + logger.debug("SQL query built in {} ms", endExecTime - startExecTime); + + return resultMap; + } + private boolean executeSqlQuery(Connection connection, String query) throws SQLException { try (PreparedStatement stmt = connection.prepareStatement(query)) { From 89b3c60165202e95c54d9b8f99a4221f6cbb8a15 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 18 Dec 2024 14:12:09 +0100 Subject: [PATCH 035/134] Add new api method --- .../src/main/java/org/micord/enums/ConfigType.java | 1 - 1 file changed, 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java index 9905e5f..977c7a5 100644 --- a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -6,7 +6,6 @@ import lombok.Getter; public enum ConfigType { BLOCK("block"), - REMOVE_MILITARY_DRAFT_NOTICES("removeMilitaryDraftNotices"), UNBLOCK("unblock"), REMOVE_FROM_SYSTEM("removeFromSystem"), REMOVE_FROM_CALL_LIST("removeFromCallList"), From 49d960d2d9b41060a1799a2ed0e1fbb5480229fe Mon Sep 17 00:00:00 2001 From: Alexandr Shalaginov Date: Wed, 18 Dec 2024 16:22:10 +0300 Subject: [PATCH 036/134] ERVU-226: add picker's refs on button in page --- .../src/main/resources/business-model/main.page | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/src/main/resources/business-model/main.page b/resources/src/main/resources/business-model/main.page index 51cacb3..b82c05f 100644 --- a/resources/src/main/resources/business-model/main.page +++ b/resources/src/main/resources/business-model/main.page @@ -1477,6 +1477,12 @@ +endDate + + {"objectId":"da2d6408-1e95-4c10-8418-9786928e5167","packageName":"component.field","className":"DateTimePicker","type":"TS"} + + + ervuIdField {"objectId":"a462ac66-85d2-4d7c-957b-a0837c2fd94a","packageName":"component.field","className":"TextArea","type":"TS"} @@ -1486,6 +1492,12 @@ methodPath "/removeMilitaryDraftNotices" + + + +startDate + + {"objectId":"760f5cd0-5b6d-4939-ba1c-5fd9bb61f95c","packageName":"component.field","className":"DateTimePicker","type":"TS"} From 30c7d20768ac3342a9ddac4b9c81a808394ea6d8 Mon Sep 17 00:00:00 2001 From: Alexandr Shalaginov Date: Wed, 18 Dec 2024 16:55:04 +0300 Subject: [PATCH 037/134] ERVU-226: add config --- config/cde-xml/removeMilitaryDraftNotices.xml | 244 ++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100644 config/cde-xml/removeMilitaryDraftNotices.xml diff --git a/config/cde-xml/removeMilitaryDraftNotices.xml b/config/cde-xml/removeMilitaryDraftNotices.xml new file mode 100644 index 0000000..c06c846 --- /dev/null +++ b/config/cde-xml/removeMilitaryDraftNotices.xml @@ -0,0 +1,244 @@ + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + subpoena + + + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + decision-document-service + + + + + + + > 'importId' = ANY (importIds::text[]); + DELETE FROM object_history WHERE object_id = ANY (recruitIds); + DELETE FROM object_versions WHERE object_id = ANY (recruitIds); + END + $$; + ]]> + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + journal_dev + + + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + geps_notifications + + + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + incidents + + + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + person_registry + + + + + + + + + + 10.10.31.118 + 5432 + ervu + ervu + org.postgresql.Driver + org.postgresql.xa.PGXADataSource + 50 + appeal-document-service + + + \ No newline at end of file From 6597a3dd7d0ecee2d1435554436462e0ec93e538 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 18 Dec 2024 16:33:07 +0100 Subject: [PATCH 038/134] Change order --- .../java/org/micord/service/RequestService.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/RequestService.java b/config-data-executor/src/main/java/org/micord/service/RequestService.java index 7285745..367abdb 100644 --- a/config-data-executor/src/main/java/org/micord/service/RequestService.java +++ b/config-data-executor/src/main/java/org/micord/service/RequestService.java @@ -233,6 +233,10 @@ public class RequestService { @Transactional public void processSqlAndAqlRequests(Requests config, List ids) { logger.debug("Starting transactional processing of requests"); + if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { + processS3Requests(config.getS3Requests(), ids); + } + if (config.getSqlRequests() != null) { for (SqlRequest request : config.getSqlRequests()) { processSqlRequests(request, ids); @@ -244,14 +248,15 @@ public class RequestService { processAqlRequests(request, ids); } } - if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { - processS3Requests(config.getS3Requests(), ids); - } } @Transactional public void processSqlAndAqlRequests(Requests config, RequestParameters parameters) { logger.debug("Starting transactional processing of requests"); + if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { + processS3Requests(config.getS3Requests(), parameters); + } + if (config.getSqlRequests() != null) { for (SqlRequest request : config.getSqlRequests()) { processSqlRequests(request, parameters); @@ -263,9 +268,6 @@ public class RequestService { processAqlRequests(request, parameters.getIds()); } } - if (config.getS3Requests() != null && !config.getS3Requests().isEmpty()) { - processS3Requests(config.getS3Requests(), parameters); - } } private void processSqlRequests(SqlRequest request, List ids) { From 9f8662c580d72b7d48f9a44be30d270ba9acceef Mon Sep 17 00:00:00 2001 From: Alexandr Shalaginov Date: Wed, 18 Dec 2024 20:50:18 +0300 Subject: [PATCH 039/134] SUPPORT-8810: fix --- backend/src/main/java/service/ConfigExecutorService.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index 1d000e7..ea6378a 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -66,7 +66,13 @@ public class ConfigExecutorService { public String call(String methodPath, ConfigExecuteRequest configExecuteRequest) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity entity = new HttpEntity<>(configExecuteRequest, headers); + HttpEntity entity; + if (configExecuteRequest.getStartDate() == null && configExecuteRequest.getStartDate() == null) { + entity = new HttpEntity<>(configExecuteRequest.getIds(), headers); + } + else { + entity = new HttpEntity<>(configExecuteRequest, headers); + } LOGGER.info("Starts call config executor service with method: {}, for request: {}", methodPath, configExecuteRequest ); From b487ebe95a7ca7453acbbb199853537e5f399273 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 18 Dec 2024 21:00:12 +0100 Subject: [PATCH 040/134] Disable validation --- .../src/main/java/org/micord/controller/ApiController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 8fc94f5..00cac82 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -46,7 +46,7 @@ public class ApiController { validateRequestDates(request); List ids = request.getIds(); - validationService.validateAll(ids); +// validationService.validateAll(ids); logger.debug("Starting removeMilitaryDraftNotices process for ids: {}", ids); apiService.process(ConfigType.REMOVE_MILITARY_DRAFT_NOTICES, request); From f18734f0576df2b59c4502f5120c6a7fe0c86e01 Mon Sep 17 00:00:00 2001 From: Alexandr Shalaginov Date: Thu, 19 Dec 2024 08:24:53 +0300 Subject: [PATCH 041/134] SUPPORT-8810: fix --- .../src/main/java/rpc/ConfigExecutorRpcService.java | 5 +++-- .../src/main/java/service/ConfigExecutorService.java | 9 +++++---- frontend/src/ts/ervu/ConfigExecuteBtn.ts | 10 +++++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/backend/src/main/java/rpc/ConfigExecutorRpcService.java b/backend/src/main/java/rpc/ConfigExecutorRpcService.java index 9c52623..dad0921 100644 --- a/backend/src/main/java/rpc/ConfigExecutorRpcService.java +++ b/backend/src/main/java/rpc/ConfigExecutorRpcService.java @@ -21,7 +21,8 @@ public class ConfigExecutorRpcService extends Behavior { } @RpcCall - public String callConfigExecutor(String methodPath, ConfigExecuteRequest configExecuteRequest) { - return configExecutorService.call(methodPath, configExecuteRequest); + public String callConfigExecutor(String methodPath, ConfigExecuteRequest configExecuteRequest, + boolean withDate) { + return configExecutorService.call(methodPath, configExecuteRequest, withDate); } } diff --git a/backend/src/main/java/service/ConfigExecutorService.java b/backend/src/main/java/service/ConfigExecutorService.java index ea6378a..78af75d 100644 --- a/backend/src/main/java/service/ConfigExecutorService.java +++ b/backend/src/main/java/service/ConfigExecutorService.java @@ -63,15 +63,16 @@ public class ConfigExecutorService { return fileModel; } - public String call(String methodPath, ConfigExecuteRequest configExecuteRequest) { + public String call(String methodPath, ConfigExecuteRequest configExecuteRequest, + boolean withDate) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity entity; - if (configExecuteRequest.getStartDate() == null && configExecuteRequest.getStartDate() == null) { - entity = new HttpEntity<>(configExecuteRequest.getIds(), headers); + if (withDate) { + entity = new HttpEntity<>(configExecuteRequest, headers); } else { - entity = new HttpEntity<>(configExecuteRequest, headers); + entity = new HttpEntity<>(configExecuteRequest.getIds(), headers); } LOGGER.info("Starts call config executor service with method: {}, for request: {}", methodPath, configExecuteRequest diff --git a/frontend/src/ts/ervu/ConfigExecuteBtn.ts b/frontend/src/ts/ervu/ConfigExecuteBtn.ts index eeb6da0..698639c 100644 --- a/frontend/src/ts/ervu/ConfigExecuteBtn.ts +++ b/frontend/src/ts/ervu/ConfigExecuteBtn.ts @@ -51,11 +51,15 @@ export class ConfigExecuteBtn extends AbstractButton { .map(id => id.trim().replace(/"/g, '')); let configExecuteRequest: ConfigExecuteRequest = new ConfigExecuteRequest(); + let withDate = false; configExecuteRequest.ids = ids; - configExecuteRequest.startDate = this.startDate ? this.startDate.getDateValue() : null; - configExecuteRequest.endDate = this.endDate ? this.endDate.getDateValue() : null; + if (this.startDate || this.endDate) { + withDate = true; + configExecuteRequest.startDate = this.startDate ? this.startDate.getDateValue() : null; + configExecuteRequest.endDate = this.endDate ? this.endDate.getDateValue() : null; + } - return this.script.callConfigExecutor(this.methodPath, configExecuteRequest, true) + return this.script.callConfigExecutor(this.methodPath, configExecuteRequest, withDate, true) .then(successMsg => this.messagesService.success(successMsg)) .catch(error => Promise.reject(error)); } From 43d996d0716f9b678782b4a851e076fa2a43f5fa Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Thu, 19 Dec 2024 19:57:39 +0100 Subject: [PATCH 042/134] Return of validation --- .../src/main/java/org/micord/controller/ApiController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 00cac82..8fc94f5 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -46,7 +46,7 @@ public class ApiController { validateRequestDates(request); List ids = request.getIds(); -// validationService.validateAll(ids); + validationService.validateAll(ids); logger.debug("Starting removeMilitaryDraftNotices process for ids: {}", ids); apiService.process(ConfigType.REMOVE_MILITARY_DRAFT_NOTICES, request); From 2f86fb06fe1b4d164ba620e0f301a1f1181cb84a Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Tue, 24 Dec 2024 08:33:42 +0100 Subject: [PATCH 043/134] Remove prefix for atomikos db --- .../src/main/java/org/micord/config/DatabaseConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java b/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java index 41ec81e..9d7925c 100644 --- a/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java +++ b/config-data-executor/src/main/java/org/micord/config/DatabaseConnection.java @@ -43,7 +43,7 @@ public class DatabaseConnection { if (!dataSources.containsKey(database)) { AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean(); - xaDataSource.setUniqueResourceName("jdbcDatasource_" + database); + xaDataSource.setUniqueResourceName(database); xaDataSource.setXaDataSourceClassName(params.getJdbcXaDataSourceClassName()); xaDataSource.setPoolSize(Integer.parseInt(params.getJdbcXaDataSourcePoolSize())); From 159da1d9a9c45be752b7898ef5efeeb461e11bb1 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Fri, 27 Dec 2024 16:21:59 +0100 Subject: [PATCH 044/134] Modify error message for validation --- .../src/main/java/org/micord/service/ValidationService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-data-executor/src/main/java/org/micord/service/ValidationService.java b/config-data-executor/src/main/java/org/micord/service/ValidationService.java index 1cc36c2..6eb675e 100644 --- a/config-data-executor/src/main/java/org/micord/service/ValidationService.java +++ b/config-data-executor/src/main/java/org/micord/service/ValidationService.java @@ -82,10 +82,10 @@ public class ValidationService { List invalidColumns = columnValues.entrySet().stream() .filter(entry -> Boolean.FALSE.equals(entry.getValue())) .map(Map.Entry::getKey) - .collect(Collectors.toList()); + .toList(); if (!invalidColumns.isEmpty()) { - String message = "Запись с UUID = " + id + " не прошла проверку по следующим колонкам: " + String.join(", ", invalidColumns); + String message = "Запись UUID = " + id + " не удовлетворяет критериям валидации."; invalidRecords.put(id, message); } }); From d288e7e4b485f53db65057264e17416194266e08 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Sat, 28 Dec 2024 11:41:21 +0100 Subject: [PATCH 045/134] Add delete files method --- .../main/java/org/micord/controller/ApiController.java | 8 ++++++++ .../src/main/java/org/micord/enums/ConfigType.java | 1 + 2 files changed, 9 insertions(+) diff --git a/config-data-executor/src/main/java/org/micord/controller/ApiController.java b/config-data-executor/src/main/java/org/micord/controller/ApiController.java index 8fc94f5..5fe05f2 100644 --- a/config-data-executor/src/main/java/org/micord/controller/ApiController.java +++ b/config-data-executor/src/main/java/org/micord/controller/ApiController.java @@ -55,6 +55,14 @@ public class ApiController { return ResponseEntity.ok("Операция \"Удаление повесток\" завершена успешно."); } + @PostMapping("/deleteFiles") + public ResponseEntity deleteFiles(@RequestBody List ids) throws FileNotFoundException { + + apiService.process(ConfigType.DELETE_FILES, ids); + + return ResponseEntity.ok("Операция \"Удаление файлов\" завершена успешно."); + } + @PostMapping("/block") public ResponseEntity block(@RequestBody List ids) throws SQLException, FileNotFoundException { validationService.validateAll(ids); diff --git a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java index 977c7a5..9c475d1 100644 --- a/config-data-executor/src/main/java/org/micord/enums/ConfigType.java +++ b/config-data-executor/src/main/java/org/micord/enums/ConfigType.java @@ -6,6 +6,7 @@ import lombok.Getter; public enum ConfigType { BLOCK("block"), + DELETE_FILES("deleteFiles"), UNBLOCK("unblock"), REMOVE_FROM_SYSTEM("removeFromSystem"), REMOVE_FROM_CALL_LIST("removeFromCallList"), From 37b57a2dd08473d9b095d7aa5d7ccf1bd1d52c64 Mon Sep 17 00:00:00 2001 From: ilyin Date: Sat, 28 Dec 2024 14:15:45 +0300 Subject: [PATCH 046/134] tabDeleteFiles --- .../main/resources/business-model/main.page | 456 ++++++++++++++++++ 1 file changed, 456 insertions(+) diff --git a/resources/src/main/resources/business-model/main.page b/resources/src/main/resources/business-model/main.page index b82c05f..c5040f6 100644 --- a/resources/src/main/resources/business-model/main.page +++ b/resources/src/main/resources/business-model/main.page @@ -526,6 +526,7 @@ d2defc20-341d-4064-9f92-82975076f28c Удаление данных по гражданам true + false false @@ -979,6 +980,7 @@ 350e6ccf-4962-4ef4-b4eb-7ed5f7037ddf Удаление повесток true + false false @@ -2577,6 +2579,7 @@ 6b052672-1322-431d-b143-20302f9e8e02 Выгрузки true + false false @@ -3490,6 +3493,459 @@ true + + 84b784bf-7bec-42f5-bbb7-8a465de45019 + 8a6900b7-f171-43c0-bcc1-573ff67efc3a + Удаление загрузочного файла + true + false + + + + heading + + "Удаление загрузочного файла" + + + + + + + + service + + +BpmnDefaultValueLoaderServiceImpl +service.loading + + + + + + + + + + 69af9ec9-d640-499a-bf05-cda6ce64a81f + b2a8e669-bf77-45ea-986d-fa0af646bb4f + ИД ЕРН delete_file + false + false + + + + cssClasses + + + + "width-full" + + + + + + errorTooltipStyle + + + + height + + null + + + +false + + + + label + +"ИД ЕРН" + + + + style + + + + height + + "200px" + + + + + + + + + + + + false + + + + 57c7cd21-1556-4dbd-b9da-33520486a1db + 0f71662f-20cd-4f32-bd25-fb5d920a7b3e + SQL Получить ИД ЕРВУ граждан delete_file + false + false + + + + caption + +"Получить ИД ЕРВУ граждан" + + + + + + + + queryParams + + + + + + objectValue + + + + argument + +null + + + + behavior + +{"objectId":"b2a8e669-bf77-45ea-986d-fa0af646bb4f","packageName":"component.field","className":"TextArea","type":"TS"} + + + + method + +"getValue" + + + + + + + + + + + + + + + + executeSqlButtonService + + + + jndiName + + "java:/webbpm/personRegistryDS" + + + + sql + + "select \u0027{\u0027||string_agg(\u0027\"\u0027||id::text||\u0027\"\u0027,\u0027,\u0027)||\u0027}\u0027\nfrom recruits\nwhere system_id_ern \u003d any(string_to_array(trim(trailing \u0027,\u0027 from replace(replace(replace (?, \u0027\\n\u0027, E\u0027\\n\u0027),chr(13),\u0027\u0027),chr(10),\u0027,\u0027)),\u0027,\u0027))" + + + + + ReadOnlySqlButtonServiceImpl + ru.micord.ervu_eks.component.service + + + + + + + + 98594cec-0a9b-4cef-af09-e1b71cb2ad9e + 040fd6fe-eb29-45a6-a8f7-c2bd9a805b6c + AC_get_id + false + false + + + + eventRefs + + + + + + behavior + + {"objectId":"0f71662f-20cd-4f32-bd25-fb5d920a7b3e","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} + + + + propertyName + + "clickEvent" + + + + + + + + + ifCondition + + + + logicalOperation + + null + + + + + + + thenActions + + + + + + behavior + + {"objectId":"b4805fdc-602f-4a9d-9527-a0761805523c","packageName":"component.field","className":"TextArea","type":"TS"} + + + + method + + "setValue" + + + + value + + + + objectValue + + + + argument + + null + + + + behavior + + {"objectId":"0f71662f-20cd-4f32-bd25-fb5d920a7b3e","packageName":"component.button","className":"ExecuteSqlButton","type":"TS"} + + + + method + + "getResult" + + + + + + + + + + + + + + + + + + + 69af9ec9-d640-499a-bf05-cda6ce64a81f + b4805fdc-602f-4a9d-9527-a0761805523c + ИД ЕРВУ граждан + false + false + + + + cssClasses + + + + "width-full" + + + + + + errorTooltipStyle + + + + height + + null + + + +false + + + + label + +"ИД ЕРВУ граждан" + + + + style + + + + height + + "200px" + + + + + + + + + + + + false + + + + SaveValueToVariable + modules.bpmn.script + + true + true + + + variable + +"exclude_ids_string" + + + + + + + fd7e47b9-dce1-4d14-9f3a-580c79f59579 + a6a78411-7f72-444b-b13f-ba7ee7c1298a + Удалить граждан из списков вызова + false + true + + + c8dfe691-a84a-48da-b79e-6298d90db71d + f9766e20-0ac9-459b-b96b-47895ce838c6 + Navigation Исключить граждан из списков вызова + false + true + + + d7d54cfb-26b5-4dba-b56f-b6247183c24d + fb0a49e7-71ca-4f78-b6e4-f35d9a69f45e + Hbox + true + false + + + + + service + + + BpmnDefaultValueLoaderServiceImpl + service.loading + + + + + + + + + + 67d2e469-003f-48d1-99a5-bdd27bb36d58 + da4f5d04-d09e-439f-a877-13f0601f52b7 + ConfigExecuteButton Удалить загрузочный файл + false + false + + + +caption + + "Удалить загрузочный файл" + + + +ervuIdField + + {"objectId":"b4805fdc-602f-4a9d-9527-a0761805523c","packageName":"component.field","className":"TextArea","type":"TS"} + + + +methodPath + + "/deleteFiles" + + + + + + + + c8dfe691-a84a-48da-b79e-6298d90db71d + f5fcb779-7131-4465-a318-26bd4682841b + Выход + false + false + + + +caption + + "Выход" + + + +cssClasses + + + + + +navigateTo + + "exit" + + + + + + + 133ca212-09a6-413a-ac66-e2f6ce188f1f a18f6614-fec4-4567-926d-984d38ac4db4 From a17445246541759585014c536c4d9e5f936a72a9 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 22 Jan 2025 08:47:13 +0100 Subject: [PATCH 047/134] Atomikos timeouts --- .../src/main/resources/transactions.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-data-executor/src/main/resources/transactions.properties b/config-data-executor/src/main/resources/transactions.properties index 4378827..dc3e7e1 100644 --- a/config-data-executor/src/main/resources/transactions.properties +++ b/config-data-executor/src/main/resources/transactions.properties @@ -1,2 +1,2 @@ -com.atomikos.icatch.max_timeout = 300000 -com.atomikos.icatch.default_jta_timeout=300000 +com.atomikos.icatch.max_timeout = 10 +com.atomikos.icatch.default_jta_timeout=10 From daea91efe5c1222ebc25548edefcb58e570d2089 Mon Sep 17 00:00:00 2001 From: Maksim Tereshin Date: Wed, 22 Jan 2025 12:58:25 +0100 Subject: [PATCH 048/134] Atomikos timeouts --- .../src/main/resources/transactions.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config-data-executor/src/main/resources/transactions.properties b/config-data-executor/src/main/resources/transactions.properties index dc3e7e1..6413e17 100644 --- a/config-data-executor/src/main/resources/transactions.properties +++ b/config-data-executor/src/main/resources/transactions.properties @@ -1,2 +1,2 @@ -com.atomikos.icatch.max_timeout = 10 -com.atomikos.icatch.default_jta_timeout=10 +com.atomikos.icatch.max_timeout = 1800000 +com.atomikos.icatch.default_jta_timeout=1800000 From d9a1ef55ff285815ac1fb2b361d2a8b9a5fe52be Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Wed, 26 Feb 2025 11:31:10 +0300 Subject: [PATCH 049/134] SUPPORT-8961: Fix --- .../i18n/project_exception_handler_messages.properties | 1 + .../i18n/project_exception_handler_messages_en_US.properties | 1 + frontend/src/resources/app-config.json | 3 ++- frontend/src/ts/modules/app/component/login.component.ts | 2 +- .../src/ts/modules/app/component/new-password.component.ts | 2 +- frontend/src/ts/modules/app/component/register.component.ts | 2 +- .../src/ts/modules/app/component/reset-password.component.ts | 2 +- 7 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 backend/src/main/resources/i18n/project_exception_handler_messages.properties create mode 100644 backend/src/main/resources/i18n/project_exception_handler_messages_en_US.properties diff --git a/backend/src/main/resources/i18n/project_exception_handler_messages.properties b/backend/src/main/resources/i18n/project_exception_handler_messages.properties new file mode 100644 index 0000000..49b27a2 --- /dev/null +++ b/backend/src/main/resources/i18n/project_exception_handler_messages.properties @@ -0,0 +1 @@ +error.unknown=Произошла ошибка ввода данных. Проверьте правильность заполнения полей. diff --git a/backend/src/main/resources/i18n/project_exception_handler_messages_en_US.properties b/backend/src/main/resources/i18n/project_exception_handler_messages_en_US.properties new file mode 100644 index 0000000..dd31bb8 --- /dev/null +++ b/backend/src/main/resources/i18n/project_exception_handler_messages_en_US.properties @@ -0,0 +1 @@ +error.unknown=A data entry error occurred. Check that the fields are filled in correctly. \ No newline at end of file diff --git a/frontend/src/resources/app-config.json b/frontend/src/resources/app-config.json index 442b79c..cdd91c5 100644 --- a/frontend/src/resources/app-config.json +++ b/frontend/src/resources/app-config.json @@ -15,5 +15,6 @@ "password_pattern": "^((?=(.*\\d){1,})(?=.*[a-zа-яё])(?=.*[A-ZА-ЯЁ]).{8,})$", "password_pattern_error": "Пароль должен содержать заглавные или прописные буквы и как минимум 1 цифру", "show.client.errors": false, - "available_task.single_fetch": true + "available_task.single_fetch": true, + "unknown.error.msg": "Произошла ошибка ввода данных. Проверьте правильность заполнения полей." } diff --git a/frontend/src/ts/modules/app/component/login.component.ts b/frontend/src/ts/modules/app/component/login.component.ts index 6e790b2..0989d72 100644 --- a/frontend/src/ts/modules/app/component/login.component.ts +++ b/frontend/src/ts/modules/app/component/login.component.ts @@ -50,7 +50,7 @@ export class LoginComponent { } default: { this.errorMessage = - "Произошла неизвестная ошибка, обратитесь в службу технической поддержки!"; + "Произошла ошибка ввода данных. Проверьте правильность заполнения полей"; break; } } diff --git a/frontend/src/ts/modules/app/component/new-password.component.ts b/frontend/src/ts/modules/app/component/new-password.component.ts index ac7c434..470251d 100644 --- a/frontend/src/ts/modules/app/component/new-password.component.ts +++ b/frontend/src/ts/modules/app/component/new-password.component.ts @@ -48,7 +48,7 @@ export class NewPasswordComponent { .then(() => this.router.navigateByUrl("/"), () => { this.errorMessage = - 'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!'; + 'Произошла ошибка ввода данных. Проверьте правильность заполнения полей'; }); } diff --git a/frontend/src/ts/modules/app/component/register.component.ts b/frontend/src/ts/modules/app/component/register.component.ts index 2501c03..78dd3e6 100644 --- a/frontend/src/ts/modules/app/component/register.component.ts +++ b/frontend/src/ts/modules/app/component/register.component.ts @@ -52,7 +52,7 @@ export class RegisterComponent { this.errorMessage = 'Пользователь с данным почтовым адресом уже существует'; } else { - this.errorMessage = 'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!'; + this.errorMessage = 'Произошла ошибка ввода данных. Проверьте правильность заполнения полей'; } }); } diff --git a/frontend/src/ts/modules/app/component/reset-password.component.ts b/frontend/src/ts/modules/app/component/reset-password.component.ts index e9b9ee2..dd2ddc7 100644 --- a/frontend/src/ts/modules/app/component/reset-password.component.ts +++ b/frontend/src/ts/modules/app/component/reset-password.component.ts @@ -24,7 +24,7 @@ export class ResetPasswordComponent { .then(() => this.router.navigateByUrl("/"), (reason: any) => { this.errorMessage = - 'Произошла неизвестная ошибка, обратитесь в службу технической поддержки!'; + 'Произошла ошибка ввода данных. Проверьте правильность заполнения полей'; }); } } From dfd96a74720982f5a22605009317968083c8c0e9 Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Wed, 26 Feb 2025 14:44:57 +0300 Subject: [PATCH 050/134] update version to 3.192.1 --- frontend/package-lock.json | 6 +- frontend/package.json | 2 +- .../.flattened-pom.xml | 14 +- .../grids/NavigateOnGridCellOrRow.html | 2 +- .../META-INF/package-descriptor.xml | 8 +- .../component/buttons/Button.component | 4 +- .../component/buttons/CancelButton.component | 4 +- .../buttons/ClearFilterButton.component | 4 +- .../component/buttons/DeleteButton.component | 4 +- .../buttons/DownloadButton.component | 4 +- .../component/buttons/ErrorButton.component | 4 +- .../buttons/ExecProcessButton.component | 4 +- .../buttons/ExecuteSqlButton.component | 4 +- .../component/buttons/FilterButton.component | 4 +- .../buttons/NavigationButton.component | 4 +- .../component/buttons/SaveButton.component | 4 +- .../component/buttons/SelectButton.component | 4 +- .../component/buttons/SignButton.component | 341 ------------------ .../component/buttons/SignButtonV2.component | 4 +- .../buttons/StartProcessButton.component | 4 +- .../EntityGraphReportingButton.component | 4 +- .../reporting/FormReportingButton.component | 4 +- .../containers/CollapsiblePanel.component | 4 +- .../component/containers/Dialog.component | 4 +- .../component/containers/DropDown.component | 4 +- .../component/containers/FieldSet.component | 4 +- .../containers/FilterGroup.component | 4 +- .../component/containers/Form.component | 4 +- .../component/containers/HBox.component | 4 +- .../containers/TabContainer.component | 4 +- .../component/containers/TabItem.component | 4 +- .../component/containers/VBox.component | 4 +- .../component/containers/Window.component | 4 +- .../editable-grids/EditableGrid.component | 4 +- .../columns/AutocompleteGridColumn.component | 4 +- .../columns/CheckBoxGridColumn.component | 4 +- .../columns/ComboBoxGridColumn.component | 4 +- .../DateTimePickerGridColumn.component | 4 +- .../columns/MoneyFieldGridColumn.component | 4 +- .../columns/NumberFieldGridColumn.component | 4 +- .../columns/OneToManyGridColumn.component | 4 +- .../columns/OneToManyGridColumnV2.component | 4 +- .../ReadonlyClientGridColumn.component | 4 +- .../ReadonlyServerGridColumn.component | 4 +- .../StaticComboBoxGridColumn.component | 4 +- .../columns/TextAreaGridColumn.component | 4 +- .../columns/TextFieldGridColumn.component | 4 +- .../columns/TimePickerGridColumn.component | 4 +- .../component/fields/Address.component | 6 +- .../component/fields/Autocomplete.component | 4 +- .../component/fields/CheckBox.component | 4 +- .../component/fields/ComboBox.component | 4 +- .../component/fields/DateTimePicker.component | 4 +- .../fields/EditableOneToMany.component | 4 +- .../component/fields/FilePreview.component | 4 +- .../component/fields/FileUpload.component | 4 +- .../component/fields/ManyToMany.component | 4 +- .../fields/ManyToManyField.component | 4 +- .../component/fields/MoneyField.component | 4 +- .../component/fields/NumberField.component | 4 +- .../component/fields/OneToMany.component | 4 +- .../component/fields/OneToManyV2.component | 4 +- .../component/fields/RadioButton.component | 4 +- .../fields/SignVerification.component | 4 +- .../component/fields/StaticComboBox.component | 4 +- .../fields/StaticRadioButton.component | 4 +- .../component/fields/Text.component | 4 +- .../component/fields/TextArea.component | 4 +- .../component/fields/TextField.component | 4 +- .../component/fields/TimePicker.component | 4 +- .../component/fields/TreeField.component | 4 +- .../editableonetomany/EditableGrid.component | 4 +- .../fields/editableonetomany/Form.component | 4 +- .../fileupload/FileUploadField.component | 4 +- .../fields/filters/FilterAddress.component | 4 +- .../filters/FilterAutocomplete.component | 4 +- .../fields/filters/FilterBoolean.component | 4 +- .../fields/filters/FilterCheckBox.component | 4 +- .../fields/filters/FilterComboBox.component | 4 +- .../filters/FilterDateTimePicker.component | 4 +- .../filters/FilterNumberField.component | 4 +- .../filters/FilterRadioButton.component | 4 +- .../filters/FilterStaticComboBox.component | 4 +- .../fields/filters/FilterTextArea.component | 4 +- .../fields/filters/FilterTextField.component | 4 +- .../fields/treefield/LinkField.component | 4 +- .../treefield/MultiValueField.component | 4 +- .../component/grids/Grid.component | 4 +- .../component/grids/GridV2.component | 4 +- .../component/grids/GridV2Column.component | 4 +- .../component/grids/GridV2Group.component | 4 +- .../component/grids/PagingGrid.component | 4 +- .../component/grids/TreeGrid.component | 4 +- .../uncategorized/ActionController.component | 4 +- .../uncategorized/Calendar.component | 4 +- .../component/uncategorized/Chart.component | 4 +- .../component/uncategorized/ChartV2.component | 4 +- .../uncategorized/EventCalendar.component | 4 +- .../uncategorized/GanttChart.component | 4 +- .../uncategorized/HyperLink.component | 4 +- .../component/uncategorized/IFrame.component | 4 +- .../uncategorized/InnerHtml.component | 4 +- .../uncategorized/MenuGroup.component | 4 +- .../uncategorized/MenuItem.component | 4 +- .../ValidationController.component | 4 +- .../converters/converters.jar | Bin 97826 -> 100704 bytes .../metadata/java.metadata | Bin 1110017 -> 1110341 bytes .../metadata/typescript.metadata.json | 2 +- .../ProcessInstance.component | 4 +- .../ProcessInstanceDiagram.component | 4 +- .../ProcessInstanceList.component | 4 +- .../user-management/Groups.component | 4 +- .../user-management/GroupsCreate.component | 4 +- .../user-management/GroupsEdit.component | 4 +- .../OrganizationEdit.component | 4 +- .../user-management/Organizations.component | 4 +- .../user-management/Roles.component | 4 +- .../user-management/RolesEdit.component | 4 +- .../SecurityFeatures.component | 4 +- .../StaticRouteNavigationButton.component | 4 +- .../StaticRouteSelectButton.component | 4 +- .../user-management/UserForm.component | 4 +- .../user-management/Users.component | 4 +- .../user-management/UsersCreate.component | 4 +- .../user-management/UsersEdit.component | 4 +- pom.xml | 30 +- .../ConfigExecuteButton.component | 4 +- .../business-model/ExportDataButton.component | 4 +- .../main/resources/business-model/main.page | 18 +- .../Группы редактирование.page | 4 +- .../Группы создание.page | 4 +- .../Управление пользователями/Группы.page | 4 +- .../Организации.page | 4 +- .../Организация редактирование(создание).page | 88 +---- .../Пользователи редактирование.page | 4 +- .../Пользователи создание.page | 4 +- .../Пользователи.page | 4 +- .../Роли редактирование (создание).page | 85 +---- .../Управление пользователями/Роли.page | 4 +- .../Функции безопасности.page | 4 +- ...-4f10-b748-c9a7f33d31d9.component.override | 194 +--------- ...-4367-8ff3-7f049c284978.component.override | 43 +-- ...-4c33-b29b-886876016415.component.override | 4 +- ...-413e-babf-ce54cb4e5279.component.override | 43 +-- ...-4b0e-b7a7-15a36bdeb682.component.override | 88 +---- ...-4c2d-99df-924b5ba018d6.component.override | 4 +- ...-47a8-a9dc-3170f1a99721.component.override | 43 +-- ...-4df3-b93c-e48534e798db.component.override | 113 +----- ...-423b-b6b5-727ecfce2ca1.component.override | 88 +---- ...-4662-96ad-84c0dae0ecff.component.override | 4 +- ...-4453-a2df-d5ffafa2c019.component.override | 4 +- ...-4960-9c59-02f4f0c2e4dd.component.override | 74 +--- ...-431e-815a-490959083787.component.override | 131 +------ ...-48fe-9ae0-dec9b6f4c53c.component.override | 197 +--------- ...-4161-b8ae-ef66de5776b7.component.override | 99 +---- ...-4360-8f61-1087179ad78b.component.override | 113 +----- ...-485e-a069-18b92ab4f7f7.component.override | 57 +-- 157 files changed, 426 insertions(+), 1979 deletions(-) delete mode 100644 packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButton.component diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1015d2f..3672cf6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1748,9 +1748,9 @@ } }, "@webbpm/base-package": { - "version": "3.185.0", - "resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.185.0.tgz", - "integrity": "sha512-m6qlhhYIjx6tNUJl5MNsUflAFjLt2tLurxf706iwI6IM8ZZGeTjF6j1dCeEUZnOc6hntdRigcUpOsSGa97QMog==", + "version": "3.192.1", + "resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.192.1.tgz", + "integrity": "sha512-2XVSxGMTDUYTPJWvJgXJGFqqealSzhXyYoHO6yRk5qDdgndeScwgmceTg1/xJtaFfh6ijhZ6sLQ9pcpyOAKBmg==", "requires": { "tslib": "^1.9.0" } diff --git a/frontend/package.json b/frontend/package.json index 267a6ae..d9443dd 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,7 +26,7 @@ "@angular/platform-browser-dynamic": "7.2.15", "@angular/router": "7.2.15", "@ng-bootstrap/ng-bootstrap": "4.2.2-micord.1", - "@webbpm/base-package": "3.185.0", + "@webbpm/base-package": "3.192.1", "ag-grid-angular": "29.0.0-micord.4", "ag-grid-community": "29.0.0-micord.4", "angular-calendar": "0.28.28", diff --git a/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml b/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml index bba5ff2..58575f6 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml +++ b/packages/ru.cg.webbpm.packages.base.resources/.flattened-pom.xml @@ -4,7 +4,7 @@ 4.0.0 ru.cg.webbpm.packages.base resources - 3.185.0 + 3.192.1 Micord @@ -28,13 +28,13 @@ 3.19.3 5.10.2 true - 3.185.0 + 3.192.1 1.4.200 - 1107112530 + 0226110146 UTF-8 1.10.0 true - 3.185.0 + 3.192.1 typescript.metadata.json https://repo.micord.ru MMddHHmmss @@ -47,19 +47,19 @@ ru.cg.webbpm.packages.base converters - 3.185.0 + 3.192.1 compile ru.cg.webbpm.packages.base backend - 3.185.0 + 3.192.1 compile ru.cg.webbpm.packages.base frontend - 3.185.0 + 3.192.1 compile diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html index 233b803..aaf21c0 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/components/docs/component/grids/NavigateOnGridCellOrRow.html @@ -60,7 +60,7 @@
  • Образец внешней ссылки: https://www.wildberries.ru/catalog/${sku}/detail.aspx
  • -
  • Образец внутренней ссылки: products/ru.cg.webbpm.packages.base:resources:jar:3.185.0
  • +
  • Образец внутренней ссылки: products/ru.cg.webbpm.packages.base:resources:jar:3.192.1
  • diff --git a/packages/ru.cg.webbpm.packages.base.resources/META-INF/package-descriptor.xml b/packages/ru.cg.webbpm.packages.base.resources/META-INF/package-descriptor.xml index cdf7c0d..59dff39 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/META-INF/package-descriptor.xml +++ b/packages/ru.cg.webbpm.packages.base.resources/META-INF/package-descriptor.xml @@ -4,17 +4,17 @@ Base webbpm package ru.cg.webbpm.packages.base resources - 3.185.0 - 3.185.0 + 3.192.1 + 3.192.1 ru.cg.webbpm.packages.base backend - 3.185.0 + 3.192.1 @webbpm/base-package - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/Button.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/Button.component index 06f93a9..d5f30aa 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/Button.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/Button.component @@ -8,11 +8,11 @@ component/buttons/Кнопка.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/CancelButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/CancelButton.component index 6d4eb40..c1783ed 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/CancelButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/CancelButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_отмены.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ClearFilterButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ClearFilterButton.component index 87f14aa..21bf4ef 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ClearFilterButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ClearFilterButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_очистки_фильтра.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DeleteButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DeleteButton.component index 5ff29eb..658d165 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DeleteButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DeleteButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_удаления.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DownloadButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DownloadButton.component index 8672178..7b43733 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DownloadButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/DownloadButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_загрузки.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ErrorButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ErrorButton.component index 450fb36..ec5ae9e 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ErrorButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ErrorButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_вызова_ошибки.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecProcessButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecProcessButton.component index 9f0b218..e8d5738 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecProcessButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecProcessButton.component @@ -7,11 +7,11 @@ component/buttons/Кнопка_выполнения_бизнес-процесса.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecuteSqlButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecuteSqlButton.component index 49c362a..880a923 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecuteSqlButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/ExecuteSqlButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_выполнения_SQL.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/FilterButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/FilterButton.component index f821b89..d8dc81f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/FilterButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/FilterButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_для_фильтрации.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/NavigationButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/NavigationButton.component index b114af1..7499682 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/NavigationButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/NavigationButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_навигации.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SaveButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SaveButton.component index 7dea110..ed9debd 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SaveButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SaveButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_сохранения.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SelectButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SelectButton.component index 46684f2..4a17b31 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SelectButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SelectButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_выбора.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButton.component deleted file mode 100644 index eab0f9a..0000000 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButton.component +++ /dev/null @@ -1,341 +0,0 @@ - - - 250af338-c8df-32cc-bcc7-b56b9c7da0a5 - SignButton - buttons - META-INF/components/icons/buttons/SignButton.png - META-INF/components/localization/buttons/sign-button - component/buttons/Кнопка_подписи.html - false - - 3.180.0 - - - ru.cg.webbpm.packages.base.resources - 3.180.0 - - - - - 9d1b5af1-0b8f-4b1b-b9a5-c2e6acf72d91 - 1ce5393a-8af1-4113-a5e6-b9076643ea27 - SignButton - true - false - - - - - - - - - - - d7d54cfb-26b5-4dba-b56f-b6247183c24d - c3c8717f-4bf4-4c75-b5da-fbb872f21e2c - Горизонтальный контейнер - false - - - - - - - - - - - fd7e47b9-dce1-4d14-9f3a-580c79f59579 - c7d20d03-8987-41df-8ca5-a3eecb7e5311 - SignButton - true - - - fd7e47b9-dce1-4d14-9f3a-580c79f59579 - 149c9cc0-1efe-4d1b-bf5f-f770bbd7a524 - Кнопка "Подписать" - false - - - SignButton - webbpm.electronic_sign - - true - true - - - visible - - -true - - - - completeTaskAfterSigning - - -false - - - - allowResign - -false - - - - caption - - -"Подписать" - - - - disabled - - -false - - - - - - - SignButtonRpcService - ru.cg.webbpm.electronic_sign - - true - true - - - - - true - - - - fd7e47b9-dce1-4d14-9f3a-580c79f59579 - 9efc3322-7d19-45e3-b387-76677e739237 - Кнопка "Показать подписываемые данные" - false - - - DisplayDataForSignButton - webbpm.electronic_sign - - true - true - - - dialog - - -{"objectId":"a4a2c535-9511-4732-b355-0e7cd52e7cfa","packageName":"component","className":"Dialog","type":"TS"} - - - - signButton - - -{"objectId":"149c9cc0-1efe-4d1b-bf5f-f770bbd7a524","packageName":"webbpm.electronic_sign","className":"SignButton","type":"TS"} - - - - visible - - -true - - - - caption - - -"Показать подписываемые данные" - - - - disabled - - -false - - - - - - - true - - - - DisplayDataForSignButton - webbpm.electronic_sign - - true - true - - true - - - - fd7e47b9-dce1-4d14-9f3a-580c79f59579 - d24931e5-6127-42ba-9723-b0066817f5fb - Button - true - - - - 86f297f1-ab3d-40e0-ac2f-89cc944b7f0a - 6c132aa4-1b38-47ba-bf7c-f811b4b2cb7f - Диалог - true - - - 86f297f1-ab3d-40e0-ac2f-89cc944b7f0a - a4a2c535-9511-4732-b355-0e7cd52e7cfa - Диалог - false - - - - title - - - "Подписываемые данные" - - - - - - - - - - - - ba24d307-0b91-4299-ba82-9d0b52384ff2 - 9714ae34-d49a-47f3-83ea-742d986fa108 - Текст - false - - - - - - - - - - - false - - - - fd7e47b9-dce1-4d14-9f3a-580c79f59579 - 47094714-1ba4-4291-ae11-2114191430e4 - Закрыть - false - - - - caption - - "Закрыть" - - - - cssClasses - - - - "align-center" - - - - true - - - - - - - CloseDialog - custom - - true - true - true - - - - HideDialog - component.complex.common - - true - true - true - - - - 98594cec-0a9b-4cef-af09-e1b71cb2ad9e - 1a8e985e-76a6-4d4b-8219-68690601d79a - AC_close - false - - - - - eventRefs - - - - - - behavior - - {"objectId":"47094714-1ba4-4291-ae11-2114191430e4","packageName":"component.button","className":"Button","type":"TS"} - - - - propertyName - - "clickEvent" - - - - - - - - - thenActions - - - - - - behavior - - {"objectId":"a4a2c535-9511-4732-b355-0e7cd52e7cfa","packageName":"component","className":"Dialog","type":"TS"} - - - - method - - "hide" - - - - - - - - - - - - - - diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButtonV2.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButtonV2.component index 6757c96..626ff40 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButtonV2.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/SignButtonV2.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_подписи.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/StartProcessButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/StartProcessButton.component index 736e22f..2e7bbba 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/StartProcessButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/StartProcessButton.component @@ -8,11 +8,11 @@ component/buttons/Кнопка_запуска_бизнес-процесса.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/EntityGraphReportingButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/EntityGraphReportingButton.component index 03c914f..61cedc3 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/EntityGraphReportingButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/EntityGraphReportingButton.component @@ -8,11 +8,11 @@ component/buttons/reporting/Кнопка_печати_из_графа_сущности.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/FormReportingButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/FormReportingButton.component index e9931d0..3f8540d 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/FormReportingButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/buttons/reporting/FormReportingButton.component @@ -8,11 +8,11 @@ component/buttons/reporting/Кнопка_печати_отчета_из_формы.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/CollapsiblePanel.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/CollapsiblePanel.component index 5346661..40550af 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/CollapsiblePanel.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/CollapsiblePanel.component @@ -8,11 +8,11 @@ component/containers/Сворачиваемая_панель.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Dialog.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Dialog.component index deafe12..45b25fc 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Dialog.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Dialog.component @@ -8,11 +8,11 @@ component/containers/Диалог.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/DropDown.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/DropDown.component index 0f8008b..e5ee911 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/DropDown.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/DropDown.component @@ -8,11 +8,11 @@ component/containers/Контейнер_с_кнопками.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/FieldSet.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/FieldSet.component index f1c1571..8656dc0 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/FieldSet.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/FieldSet.component @@ -8,11 +8,11 @@ component/containers/Группа_полей.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/FilterGroup.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/FilterGroup.component index 6831b81..07cf01e 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/FilterGroup.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/FilterGroup.component @@ -8,11 +8,11 @@ component/containers/Набор_фильтров.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Form.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Form.component index 878f71f..8f5e61a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Form.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Form.component @@ -8,11 +8,11 @@ component/containers/Форма.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/HBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/HBox.component index 60549ca..4058f5f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/HBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/HBox.component @@ -8,11 +8,11 @@ component/containers/Горизонтальный_контейнер.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabContainer.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabContainer.component index b2c8558..23b3cd9 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabContainer.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabContainer.component @@ -8,11 +8,11 @@ component/containers/Контейнер_вкладок.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabItem.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabItem.component index 9eccd00..eafdeb3 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabItem.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/TabItem.component @@ -8,11 +8,11 @@ component/containers/Вкладка.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/VBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/VBox.component index 410f870..50d64bc 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/VBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/VBox.component @@ -8,11 +8,11 @@ component/containers/Вертикальный_контейнер.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Window.component b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Window.component index 8638c79..f138dd5 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/containers/Window.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/containers/Window.component @@ -8,11 +8,11 @@ component/containers/Окно.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/EditableGrid.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/EditableGrid.component index 1a8891e..be83b4e 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/EditableGrid.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/EditableGrid.component @@ -8,11 +8,11 @@ component/editable-grids/EditableGrid.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/AutocompleteGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/AutocompleteGridColumn.component index f36346d..5d30def 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/AutocompleteGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/AutocompleteGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/autocomplete false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/CheckBoxGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/CheckBoxGridColumn.component index 846b1b8..70e8ad1 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/CheckBoxGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/CheckBoxGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/check-box false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ComboBoxGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ComboBoxGridColumn.component index 4ebac50..4a97082 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ComboBoxGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ComboBoxGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/combo-box false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/DateTimePickerGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/DateTimePickerGridColumn.component index e134614..072ffee 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/DateTimePickerGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/DateTimePickerGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/date-time-picker false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/MoneyFieldGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/MoneyFieldGridColumn.component index 218e0af..3b00a1d 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/MoneyFieldGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/MoneyFieldGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/money-field true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/NumberFieldGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/NumberFieldGridColumn.component index 302110c..445217a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/NumberFieldGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/NumberFieldGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/number-field false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumn.component index b78117a..90b2fa3 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/one-to-many true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumnV2.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumnV2.component index b1d95ae..0e976d0 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumnV2.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/OneToManyGridColumnV2.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/one-to-many false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyClientGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyClientGridColumn.component index 23ae0f2..da898aa 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyClientGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyClientGridColumn.component @@ -6,11 +6,11 @@ META-INF/components/localization/editable-grids/read-only true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyServerGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyServerGridColumn.component index 808f4f8..a770ef4 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyServerGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/ReadonlyServerGridColumn.component @@ -5,11 +5,11 @@ editable-grids true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/StaticComboBoxGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/StaticComboBoxGridColumn.component index fbc6641..92f10b8 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/StaticComboBoxGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/StaticComboBoxGridColumn.component @@ -8,11 +8,11 @@ Статичный_выпадающий_список_колонки_таблицы.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextAreaGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextAreaGridColumn.component index 78a171f..9ffba43 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextAreaGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextAreaGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/text-area false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextFieldGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextFieldGridColumn.component index a542c0c..59ffbfd 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextFieldGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TextFieldGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/text-field false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TimePickerGridColumn.component b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TimePickerGridColumn.component index 0aac080..3825699 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TimePickerGridColumn.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/editable-grids/columns/TimePickerGridColumn.component @@ -7,11 +7,11 @@ META-INF/components/localization/editable-grids/time-picker false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Address.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Address.component index 15c2b15..b0aeea8 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Address.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Address.component @@ -8,11 +8,11 @@ component/fields/ФИАС.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 @@ -115,7 +115,7 @@ true - FiasAddressServiceImpl + GarAddressServiceImpl service.field diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Autocomplete.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Autocomplete.component index 7b55c6d..b9cc502 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Autocomplete.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Autocomplete.component @@ -8,11 +8,11 @@ component/fields/Поле_ввода_с_подбором_значения.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/CheckBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/CheckBox.component index 5a3df58..bee86fc 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/CheckBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/CheckBox.component @@ -8,11 +8,11 @@ component/fields/Флаг.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ComboBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ComboBox.component index 5c7a12b..71fd1c6 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ComboBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ComboBox.component @@ -8,11 +8,11 @@ component/fields/Выпадающий_список.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/DateTimePicker.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/DateTimePicker.component index 5310cda..e6ba19f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/DateTimePicker.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/DateTimePicker.component @@ -8,11 +8,11 @@ component/fields/Дата.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/EditableOneToMany.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/EditableOneToMany.component index cd983e5..3fe91fd 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/EditableOneToMany.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/EditableOneToMany.component @@ -8,11 +8,11 @@ component/fields/EditableOneToMany.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/FilePreview.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/FilePreview.component index ff17afb..3da8c8a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/FilePreview.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/FilePreview.component @@ -8,11 +8,11 @@ component/fields/Файл.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/FileUpload.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/FileUpload.component index 69c4497..80d10c4 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/FileUpload.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/FileUpload.component @@ -8,11 +8,11 @@ component/fields/Файл.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToMany.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToMany.component index 32a1be0..d182b55 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToMany.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToMany.component @@ -8,11 +8,11 @@ component/fields/ManyToMany.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToManyField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToManyField.component index fd1795f..4a06d8f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToManyField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/ManyToManyField.component @@ -8,11 +8,11 @@ component/fields/ManyToManyField.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/MoneyField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/MoneyField.component index 95d1e41..825f13f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/MoneyField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/MoneyField.component @@ -8,11 +8,11 @@ component/fields/Денежное_поле.html true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/NumberField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/NumberField.component index 8ce29bc..572ce61 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/NumberField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/NumberField.component @@ -8,11 +8,11 @@ component/fields/Числовое_поле.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToMany.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToMany.component index c84d884..e0bd3c9 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToMany.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToMany.component @@ -8,11 +8,11 @@ component/fields/OneToMany.html true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToManyV2.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToManyV2.component index 057d391..963cb54 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToManyV2.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/OneToManyV2.component @@ -8,11 +8,11 @@ component/fields/OneToMany.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/RadioButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/RadioButton.component index 6c8e98e..7bf66d5 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/RadioButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/RadioButton.component @@ -8,11 +8,11 @@ component/fields/Переключатель.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/SignVerification.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/SignVerification.component index 9b1a232..17c614d 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/SignVerification.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/SignVerification.component @@ -8,11 +8,11 @@ component/fields/SignVerification.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticComboBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticComboBox.component index 124039d..7a09cac 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticComboBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticComboBox.component @@ -8,11 +8,11 @@ component/fields/Статичный_выпадающий_список.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticRadioButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticRadioButton.component index 56d65ae..566f1cf 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticRadioButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/StaticRadioButton.component @@ -8,11 +8,11 @@ component/fields/Статичный_переключатель.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Text.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Text.component index 581b3c0..10c876e 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/Text.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/Text.component @@ -8,11 +8,11 @@ component/fields/Текст.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextArea.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextArea.component index f472c5a..bb4163f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextArea.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextArea.component @@ -8,11 +8,11 @@ component/fields/Многострочное_поле.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextField.component index 3a78cd6..430b597 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TextField.component @@ -8,11 +8,11 @@ component/fields/Текстовое_поле.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TimePicker.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TimePicker.component index 3ae006c..09121e5 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TimePicker.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TimePicker.component @@ -8,11 +8,11 @@ component/fields/Время.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TreeField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TreeField.component index d5bd710..cee2de8 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/TreeField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/TreeField.component @@ -8,11 +8,11 @@ component/fields/TreeField.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/EditableGrid.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/EditableGrid.component index 9d82255..bd12ff2 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/EditableGrid.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/EditableGrid.component @@ -5,11 +5,11 @@ META-INF/components/localization/editable-grid true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/Form.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/Form.component index 6aa78c2..5b8fb11 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/Form.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/editableonetomany/Form.component @@ -4,11 +4,11 @@ EditableOneToManyForm true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/fileupload/FileUploadField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/fileupload/FileUploadField.component index 383b039..8ebc07f 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/fileupload/FileUploadField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/fileupload/FileUploadField.component @@ -5,11 +5,11 @@ META-INF/components/localization/fields/file-upload-field true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAddress.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAddress.component index 37568a7..d61bd2a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAddress.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAddress.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_полю_адреса.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAutocomplete.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAutocomplete.component index 9022711..006e93c 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAutocomplete.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterAutocomplete.component @@ -8,11 +8,11 @@ component/fields/filters/Поле_ввода_с_подбором_значения.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterBoolean.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterBoolean.component index cda2e75..903e2ec 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterBoolean.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterBoolean.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_компоненте_Флаг.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterCheckBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterCheckBox.component index 6332478..2a9cb9b 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterCheckBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterCheckBox.component @@ -8,11 +8,11 @@ component/fields/filters/Флаг.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterComboBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterComboBox.component index b01e6cb..dce26e4 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterComboBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterComboBox.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_выпадающему_списку.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterDateTimePicker.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterDateTimePicker.component index cb168e0..bc9aabd 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterDateTimePicker.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterDateTimePicker.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_дате.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterNumberField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterNumberField.component index 6a3583b..8cb9b9a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterNumberField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterNumberField.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_числовому_полю.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterRadioButton.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterRadioButton.component index 3386bf4..f858c61 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterRadioButton.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterRadioButton.component @@ -8,11 +8,11 @@ component/fields/filters/Переключатель.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterStaticComboBox.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterStaticComboBox.component index 90895be..8235caf 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterStaticComboBox.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterStaticComboBox.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_статичному_выпадающему_списку.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextArea.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextArea.component index 6b8b1ef..6c6d52a 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextArea.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextArea.component @@ -8,11 +8,11 @@ component/fields/filters/Фильтр_по_полю_многострочного_ввода.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextField.component index 9fa9186..bcee9ba 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/filters/FilterTextField.component @@ -8,11 +8,11 @@ component/fields/filters/Текстовое_поле.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/LinkField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/LinkField.component index 0599020..925764c 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/LinkField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/LinkField.component @@ -5,11 +5,11 @@ META-INF/components/localization/fields/link-field true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/MultiValueField.component b/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/MultiValueField.component index f1596e3..6583e35 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/MultiValueField.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/fields/treefield/MultiValueField.component @@ -5,11 +5,11 @@ META-INF/components/localization/fields/multi-value-field true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/Grid.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/Grid.component index 680b5b0..128e02c 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/Grid.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/Grid.component @@ -8,11 +8,11 @@ component/grids/Таблица.html true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2.component index d1edb85..347a7b0 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2.component @@ -8,11 +8,11 @@ component/grids/Таблица.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Column.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Column.component index 0c59aa2..48cae9b 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Column.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Column.component @@ -6,11 +6,11 @@ META-INF/components/localization/grids/grid false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Group.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Group.component index 865d077..ebf6932 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Group.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/GridV2Group.component @@ -6,11 +6,11 @@ META-INF/components/localization/grids/grid false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/PagingGrid.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/PagingGrid.component index f86c3c2..945c7db 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/PagingGrid.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/PagingGrid.component @@ -8,11 +8,11 @@ component/grids/Таблица_с_постраничным_отображением.html true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/grids/TreeGrid.component b/packages/ru.cg.webbpm.packages.base.resources/component/grids/TreeGrid.component index 1820a5f..c8e6e33 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/grids/TreeGrid.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/grids/TreeGrid.component @@ -8,11 +8,11 @@ component/grids/Древовидная_таблица.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ActionController.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ActionController.component index 92a245b..9b5ea78 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ActionController.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ActionController.component @@ -8,11 +8,11 @@ component/uncategorized/Обработка_событий.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Calendar.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Calendar.component index 56e1d6b..292b485 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Calendar.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Calendar.component @@ -7,11 +7,11 @@ META-INF/components/localization/uncategorized/calendar false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Chart.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Chart.component index 1d1f9cc..f0cf9aa 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Chart.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/Chart.component @@ -8,11 +8,11 @@ component/uncategorized/Диаграмма.html true - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ChartV2.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ChartV2.component index f186d3a..c338e14 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ChartV2.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ChartV2.component @@ -8,11 +8,11 @@ component/uncategorized/Диаграмма_chart-v2.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/EventCalendar.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/EventCalendar.component index 0646afb..85b8245 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/EventCalendar.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/EventCalendar.component @@ -8,11 +8,11 @@ component/uncategorized/EventCalendar.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/GanttChart.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/GanttChart.component index 8b9a72e..94d1781 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/GanttChart.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/GanttChart.component @@ -8,11 +8,11 @@ component/uncategorized/Диаграмма_Гантта_Календарный_план_.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/HyperLink.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/HyperLink.component index a79da4f..b561429 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/HyperLink.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/HyperLink.component @@ -8,11 +8,11 @@ component/uncategorized/HyperLink.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/IFrame.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/IFrame.component index 8681cf6..5f2caa2 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/IFrame.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/IFrame.component @@ -8,11 +8,11 @@ component/uncategorized/IFrame.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/InnerHtml.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/InnerHtml.component index 4fce768..2457f67 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/InnerHtml.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/InnerHtml.component @@ -8,11 +8,11 @@ component/uncategorized/InnerHtml.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuGroup.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuGroup.component index 7722ade..86c9608 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuGroup.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuGroup.component @@ -8,11 +8,11 @@ component/uncategorized/MenuGroup.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuItem.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuItem.component index 2993132..a1c6407 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuItem.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/MenuItem.component @@ -7,11 +7,11 @@ component/uncategorized/MenuItem.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ValidationController.component b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ValidationController.component index c87af5e..6f7aa89 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ValidationController.component +++ b/packages/ru.cg.webbpm.packages.base.resources/component/uncategorized/ValidationController.component @@ -8,11 +8,11 @@ component/uncategorized/ValidationController.html false - 3.185.0 + 3.192.1 ru.cg.webbpm.packages.base.resources - 3.185.0 + 3.192.1 diff --git a/packages/ru.cg.webbpm.packages.base.resources/converters/converters.jar b/packages/ru.cg.webbpm.packages.base.resources/converters/converters.jar index 2ec0eb006f253a7ed5f48219a6bf1caf47faa0cd..fd35627f3f14b8525f91554c8e2c3493bec82150 100644 GIT binary patch delta 8679 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/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 diff --git a/packages/ru.cg.webbpm.packages.base.resources/metadata/java.metadata b/packages/ru.cg.webbpm.packages.base.resources/metadata/java.metadata index 43c8bae5cb7f554663f8d40ae469390314becb6c..6100794985e7579b31a779782b5b0a14a57ab2ed 100644 GIT binary patch literal 1110341 zcmeFaYnUWQbs!p5-PP6a?&*2;yu=J3AqlAl^gz~Pfx3HoMlJd=boWS>uszPM%Be|B zb!Bx{)I7kn4ffh=_<%*mSbzX~7sE9+*It&Fu?;edtzCbteKFU**m%JExq3iu4H|`Fxp2;1TdS=X>czmT z(Ua>gbxIC(3hRE!t<(!M6{lWz>kHw}|Igq9j|~2Fu0Kn9=E;Z?1kMHgV!^3VGB*E^ zbJjWBpkC$hf>V3`Jn1h&^9852K{iQdp7hcSHJ6fG=Yz)KV)-x|`fzOM!))lo*zvM^ z>Y1w-YVPyT*XjY;1_KmefWkda{q%xU%jN&-5B}S(pZH`C$sQ$x72hcxb&Avv=Ewj& z9k}(=ex-E2_QJaf{&%jQ5Hb#bp05K)z3fE~zUU={WPhk0kejR#v+SOt|7-B8PkYs` ze;qM0fb(5+)?G>_7&a9 z#&m;Hzq(v2uDHQjujo=TUi8;%e$}ng!WzEZ49Iia0TmI+5JAWUA?E`!iUbb%6UpGUV0gs?-fmIYoD#3^~=RPaW#{)jB2P z5?#)Fb^82yX`#YZ7>SSz)YcY>a(JIVPe$BoV|@k&b*dC8Y+|1Do$}mD3ICOuCqreo z>IPmBhJmrS&yzuqL(ZGz*IjzrXKf~wR5MTuymgOyXI)C}vS%j_>obq@=FguegY`zu z4RGxcqVqMNgL*)=3wA?%1M<$l;?EAe>2c?+JtQ+ndh6axUHm+A4%jDC56JUuh-E5T z9}ZFG8%R>=sW9F8VoZTAj(^s`d{};jfz_bDR#!A1!>(2f_HFQ zA+Hlz2%Lxc4%YDfE|@gVf}F1hWVe|6yjMNrmO_DZ+hdDAI$n9~$t=k{NQRtZ(XH2) zf|46xUwn|^NYZ2|87qZ69kO!Wl5dX!-EjQ;f7f5P@QbfG+l%;_aEi3yRE`N!;*>L5 za*GuQq>Z$mmK;1qY2d9jsLRJZ{+%E1-Sz%Q3MkuTo&vN@G%pj1_Kg zVdc^Rvy_~mbW&ctvrfe;Ap;i{eY)7FRIn2zeg|rSTk?tybt&nkLBnP1`ZR0-(moRb z#21*7F)nDsMG-*rZ?Mq;h3X)hZ-IjNjDr}R#&jH4uM5cM9N#+!Zog&W-r--)l3cS4 z3-PU5+<7v{goUJ125U|LI>-%p%fY~)*f<;v=wgrw%uhCBM(FxuvTMz zHABE>ACmCRN)lE`p9Qp^pcSXtCc#6=z)`Q_;#UcC60)R^f- zH$q9@%Ifmm;;~j>;r$dPLx7GMze?RuU#l_l68QYM7N_gpx(lpj!0Ab24|%UXx9*fp z9Tbg=l3(-vitAKcCyLEFXAiOofZtC^etKzXes*fHb%YR=BY?`;^VF@@!R&%x)yUj1 zpu$KiJ5f9D#IBjJkaczl#!%g*z*!NE%TgJ>xgDQ!%TW9vSfL2WfB^(Q#J)T0d!<$k z;Fq1^7)DvIu}-zK8VzS9lWLn2gK;(yQtc=MWrn*@zQ}Wj)=a2qTLb17WKQTlfP-b1 z&Pl8ihwzkneuMSa=CXV@lEx`342J6@VbFSjJ8cFS4+m&wwC-biJS2tIab$_jM53M| z$_k2Tqy18Mh3VO4CQo!QKGz6ik5}!sorOXU9)D6xr1CrAyN@A+asD>RuUIo{wtGAoAWHh& zjfPXHM?hKk&Y0RHm+qvbpZd(GiuyNEs66&0B{x4*I#a+1Le;4h&aO*7aAB?rfv37x zoN=lp@TZuCp|nU*!c)?J+NqzO@k{K>_yT+iAruVX1Pk==4gA13K-r~ez_m;kf6y^b z4%>95d;5@W`=b6;{^0P68+cB|d#STl>6SCdSCNuDdKsP{>Uo%?3W$l&qd$U9Ji5P~ z%~)O+-C*Nk5XLRdR@`;B>pV}xa4kj`1NT$~+_%ujiqTbOR{~;s!MyGa6?_p|$Zdn* zxbVL*BWdh{!H>Ai8S#T>E}g>2OlRQOtjuWhfSnDboi`=pk-&+Dkol4O7IZ&fRzmfO&-TSb%Q?_KKT?5(1ukZ!_`JJYiw8;BLMdoJH@ln z5P_cmG3r^KYTVA3=VQfN(DgqlyS`|P0=oVeW!F#QuNwM?W=X~hsD|e&yN<7YCkV+f zqK|X-X2|ydAd_i%N_NjQ>eOFfan8E)zEhgvJAsr8L>pJoU=*QMhc93@Kiwr=k{F7~ zypodMx^q^Tk=A_6CavXLHbad8)eBoxoy}2RLS6TRGkyik7|-8AyR3hXy1^FcRG^Q$ zRXUW0L2%etSG@TEi zS7o~;k?gW&J|^jPC_tt8BvMk`+={_623{UuImCGcNgJ33Tzn84YNrel%i~U2j<-pG zwCFAA9Uu(CiCYUFM6hHu01viFZ$b}fu>irk<4)jKDMrf9i*@G{#(_bqsn~Ob5lh&% zGwInhP)wy|{)?o{w3C4FF$1KN;OTM1Q(P@`sDP5*O)+@dG}pG*BlAU@aUkf}G8GAy zB)SBu4(YP{1QQRGS&N3$o|botECPG5cBwrLLWjACm(iZiyaGf}=H19oc}j+6*B!4i z<5y34WlBcsEXS_k!mqGwp&i{MFlEg(Ny%+~P%hMKkZN-ZvMtW}!5IiuQ1`r?hg4vL zG*~nb$LG;ev9X_}WV{ym=PyjV4rD|@?pKuVi1D*&w!iy74+cN|=a2sDS26o2hnZ35 zYZ)5;NkdF$Z|{;2w~8Y?+Y%8lH_iO}C?vsoluexyLP@{Vp#C{8a4E?yE>W_L|GO!a zoxLkVS+-asAlqMpiGB=WVanxu{_MUlJ#pY=#~}Fx)7mH*DYa~hC^qls ziQ#)F8LoTPa>W&&p{(q$7o93(ol(-eGCO}1C0-=LR4(n>*-J@Zy?EMPcd&CoLNZ3RB$Sj}yW+i6M?zUjde*&avl#+8 z_GLGi_`6?u$9G=w^FNe@B=FD-3FK|1#m4%Y8~ogF{?dV=H~h`3CFR?*?%>K~KSBt( zhN10)fI=2{kk<=H^SzYhD8#}{lZOv~SF=W0c=`MA5=SKP#~(!h3<3DK5r96%$6E@) zCkzk($P7DT@i~#>J40Iq3xXY-QE`WQKd4y89S;FpTAL9!f1Qi z9W9lTGGC-pQk-%J`-0))ic67UQZoBFWEKeNhpqwSPEs-&8F+9c8^4KS`k7Ym9N6xS z!iMGHnSeZ}DKeuuj|NB3`Dw>{fB$>0cwXuM{HH9*&XK$yl)S1_k&nvqF!bQk;_S(p zrTG&JivV8FTfqFKWO(7k{OVlzf*HpAWRVC8fLGh|R-Ba((UNNDc`JPI2!0R~KRu7Y ztG654zTME)Xc14KMLdCBE3Mg{M<_qe-2xi^FrLXMLnqwrgSCChkE!9q4mheb{sv!H z;0mozGgI-a?$+hsX#8&gXV!ptWF=ED?XFj|y>D3giMgW;pCu*zA_c3a4NNq{*J zAiH$Sre>0y+2(!%RMwVbHqPkBo z-HCC{#}VpQu0eEDvaN*21J>ZET3rMzW!W3izR*50=T1_xyXhnkMvJDMy2}oGD=lqG z`j={ujp!sDBG(8+zBUA9Qkm>AF}9Z zPCk&|Btc2ZUNxSMIMlI*zK=@fla4h!Lv@PYy8&-X72A6!C4+1$HafenM#T|BAE3e6 zex|Z*_Jz=v<*v%Y8J6o#N=A8%y_68E?|qT6pFtmsl_bn#$uJK}M%Eg2uj}={mrc<2)#;AQ_Y9}8=0cLjxfjryj=tV^6 zZK4AdCXc2|WEStmkY5e+g*pIgP`W$iZBTC@jQz);wH}BWhKAf+PG>A+#0cz$LClYEd=OT$(KwRm=n> zd4@Qk|oeyszO8xRp$W!tPi`3;61s8c5ZNgU4~IZ2Wv@EzJ3+}*MKX6QU}iiDH^}$` zf++hAi`6MtC3lAb2wA&^sx20n-;OGFyI#ct2>s_gdb-I~u+@{yK+mxZ0;L*``d{I6 z4?4WN{r3U<9h`K`jWez^V`l(*Uy1mx`{0j+14!J}{XvFckXecUxHcC2s13UKLJgu3y@3%Yz1m(>a+L z_-hm%tX@o>k{vUr-Qt;P|NIg6l+&oNKoTXpqf#&hymFub_eglvGIoIaLTy@ts()Xr z@rNyVLWS6?=%HkyB#q0WuK2Mq26|D2_u{W$9cJH*fAXyosW*7}C_Er#CHpo?#%Jc2 zR%TaLPfjh)%&x31EyM5Ph>~Xa6y~_MX$;v8K2OOtGOpmDksF8$0`9xTdiohk^5Jpe z*qmki0O7GcHvah!ds-pinws^1L$y8h2}*Y1-70V+feen=?3HJ43g@#ZMdo2R zbj6Qdhjgk=!_Pe?Ta4TgMPNbcs5dd>1b|6Oen@phnFda^4raCAbhvI+{2bc2tyDWm z$q*!%Ic2QTNJ;aDwegR=9?>}Yi0I;Ev*1&<`*slHsrS#vA$AiJvmvJnpC zD(o&FjsPgle&qY#|Ni$Gc7cX7_adS>2AX&Z#KvRr`15En+9d*Ps3f_}yJ2*e&)b%5 zfz@fuWn-Y{$0C?zQZW&3=;7%;u`P`Qga2_fxGlnLr}fFGXU-_V)P_9|hUfNI&=#P- zjsR+Js-`Uv2J`2mo~5Z~SQ?grq`n$8vj!+}Lx%w*vfXWawy7oq^zv^J%+gd7S2e3v zl{x|r%Uc1x7`C5M%e-j~((R!uetU?LAvhe)Z4}_gcMAoXVB}G94K#$j<%4(Kbr9@M z_`5LuKvRY{m?%w&=DZrK^87X=EcrpE&>Z} znbV{pNl|(3G0l(;nE9$MpDjxW49r}W8Pd7;OBvD%(JyB@bFDzhww92OP^bK>Ch0FM z5Y&)NM{D%AUdw$M;tDJ*CfZ8s+a|z9$I9B|SU!h;#g^ne~9)X3oBISeLC!MTv1upo5bmt`H_L=n*EE{p^3!ZDP> zu_%$n)cfeP+ErJB7dh%E4Ng=+S`FQaUMoUh)y;86eyfSj-1=-9$;R#LYm zgaBcO_v7c-hc?42|IgNe8_3DZeHgnF!Iw5Ox}bITE{L9F-v-@%6#jz4*SW`p_0grx zGn@F0-8LNb#L%SJ&w`f$?qn^VSeRX&n@Qfu%6|tMUB(y~4F6O!_Yf(mxu-MA(nO+I z(2s@U(nKN@$TDt3+$2pT;=xMfp7dH*47(FyIHiG{=Ayxu=~`D7$l>N5Wp`^xbt_@# z_?MfExr}hNq($xj55kxW>+6AZU`Z|T2iAsU*(~r+Ecb~2%u+Hsv$Sx0e)dP2GLU%k zhSqBg5e{L0agm`XxjDGOS7(k)yoz8ShFj{CJhQbZ8DZcWMoNfj%~DV@3?r<{q}I+DHp@*(9>#c4C{ViFeOzP9 zd5K0kO>fYaVpd_=IIAn9B$YG=MOFCVGKDVs|4ph+0Q|)D40z-J2QI0k4sDn;@2ibU zuMeu#H0lXDPnbu27h$KomXaY>upNu1BV1}l|3e5x%c3{k~ z-Ub`0OFf8E0sxkkj{SjVkGXgqkE0V$0j$~yHPJhBAuvofmOtn3g!S$r6q!Lah z?=-e`iT z2P+91vLXHi6Y=7ZS$sCPcR7hOz2 z#u&ywTKN?41ARCR>fhsf<_wr4ZXoY18;y2UV|URn0n|n@am0*wve--YikrXiRVLb>~_zG3=0(E z(GUe_I2n#5jc5#!4k*5;@~LbNogNJdfme#+^k_(WG$cJ55|tuFrq-o{{vaJwZP6H4 zU-?u@b_ll%-K}-M%X^XtrJqV%akMGsIc*E^>?TJAxna@-VWo2Gx?; zJf(~r!J|!saAQw|TDHNhstwciz{4*909jjhAXCZ92FH)JeWhVsz0=3q#$!30Dq#II!6o1eT;HEFjH`DQ zSzG1`s^|MEGhKz6N!fN7stsslCcr$*B5UfldO0+F2PORvIcFWbJp{m0_n^-nfgVOm zUfo%%xc7K)3!tqwqb8%@uaq)L=%^=IGa3bdgIR(f8#Xh{M*3}L@k;a z);HOKNnw3c+th~C?r-ltFl}N_zJyr7R1l(~Ay9L&{ow5gP%3+m9 zSH@LFK1s>$vP);H)T0-|+b@s$0YHTIYRr8!1?-@&?e2Lv?Mg8bH{Orz3AWnEVM%!$ zRhQ=5v*73wX8E?JEovmimU(9lFBCOh-8J$_aE|{?g%fswWn?^rOb7e673b`hEV7gn zsafQ&P_n(~SI@dZv@k192PO7c-Lw%Fs8rL_S1uM!6DwhIYS)<|8BgD%WLJzCj`{%r zq*`~=1#u(av%mw}^al>xhZ2pI=2YT!=y@AtbL5{RFsxV!BSE0jO)J)M&&Tb0{;LRP znd3f)zv`ztnpZV5VVuq5vr#i!42^sq=3(+LF0yCCeSm4Wpou8pez(jYx4nXCxIpGC zL}I#?q?a#

    !)L-Acm$(yb(mlxpo(k_Z>fA;aY<*?z>WxYV6)Q0iA#+~BNNbfM}e z`>U{qzk|jVM@3tGq7AY+`sRfEMS1B=K9Fn(C=HI$M=9wmA=GW_p3Ea?J!~SxZwWmB zxLs$uwqBLaBm$zG=2?q#QIhx`eRsmFMILm9lK!(!;DJwpaEm-OdCF}aG9CRb>`CXs z48yGM3&%_V)OLCJ`DLrG=Bzv&ZHZ7v~nm*^vw-gR}R|EH+>5sYDq1t#qn5?Z6&SX8MotMeUs@6(K(uUFWN02nAVf1qjaB$3jj^w zRe)%u?9!RjUZr#l4!A|ySN4!}gCHE}Rb(Cp+ducX@bAV~-SZT0XbWB34YHYs)1^sn z?bypYTMrpvoqHDAULi!Cjnl!pzk-tfitm(;IMj&{ER%~F!HEmaN^fQ!#t)U20Dv&T zLAc+er;mCS8dehms*|@tFB%vlyte=e;GPSknS4)8+UAjwqM67B*&JiJnr*R5cd!V9 zv(hM+A8Ux_JSESV_o`k4)6mMYra==HM-yw3VbhH>5KXMJG59*+ zWa2EV=J8Km%vP>Z-+iiepT8-QLq>>E4x$7jcb=zYOdJ(B<++tod*W;hrwWYmcM;Y* znAyJA%&^=+m?a@a82JJtBN{#W-56KgjWDTK{zJ?jfi;mhImYg$P42M|!4_!;`hjgi z>((61DW#zV~p92ZJ>0# zpA~0Vc2Bv1TP?bCBJs(VszTfucKS1LIRCON9E^*5!lG2A?X+w+)*p-5P&ROM#Kz2O zY@+)F&3ilqV8m&fF97;mheYN^!TKj7G0hi1R4S!*nlB*h!1yMYwJdoYDKYUf`t&Zf zEBr3C%q#GiDd@xT9g*U&B_j(>n<~4etB%vNbmFuCqm5MArOHmwM6ycySld!6Rd!7R z9Rpz&X=Yd6CeGLgLD`M7YL$7oFyKGI6>hupkxd-K9;Juj_q&3uocQ=q!r>|P}0x#95Ia~ zbRy-*3bswyM+_qZkg8x?J6z|`iYOJc0&{<*4%2PxH-_odxyaS0KXv(i#xXtD`} zn9hInl`)?4Ze|UjMQ6U!ijr%kuv+3aH|OuWgXdqrTv4{QJ<#P@BB30UroMjx%FuZOQg9e?`eo%yNiZ{|TmK zY$hGR1lG)NcVIDbz_C5sLqpglUqUt(1u|2chGpvMj6kt*V>%|y6#XZWqGEVX)P9*i zkDAGLZ#Mw?>kfNP_o$?5Uz#!#h*~}Oq-R>wGp+bvdZyJP*l4n8a_K_bsRy` zifAQl`@KjYO0P^gKB;$~diSY!AF@HJ37K6GPrHz0N$TA*a~fSw3&Edy_icFhOcQSV zZB$};N_L;9yMeO8L-S?Fu?+k|5feml+Y7sD-V>6jd7{Iz51}6er*R(@ez*FlzwGl& zQt~`MC>QFrz^j%|1Ta_L4A^Sq` z|FbWKEgVYromiP&KDjWpICX4xVRmt~0RJu=nVp|qoy8c-#G?TAJ0e3thR@`a@!}KM zQ0W)M#fEi$=9P1Wq(oZ`8)=4FbFlM@J2^S=7O>vKfI^;I3WwTTd$(Ty@&{a_yr>Cb`5ABIgvc~s#;BdK3 zhS&BV7IKnv9k5df#B3q^FcbJ~9jcrg5({ z?j>lVWkXkv5TtRhSf;EkLXvlYMBHoJs#8C6)DPBY&lg=Z%_$kh(v&X$!6LY|{rw60 zTi&|seD4WGtvbR+$-wIAz&{5?Lpy^-1llqgHd4%eAa^sfhmtXfsnHec6wj;%PEk}> zl}XzWz1sfK4YIlYk0Q+>Q@vK77$-k;93Z+s@Te=foE#i%%1tTTrQnSrXSkoCRCi3i z?_vg)YuLcrwpM$hWN@lhbE|ljNN0=7CljHZ{{X~&cbIOi8+~A=;@91armScIRWlr! zYEb_o$Ki9*O;Y(H)1Nf^qm@Sebmy}-K?Q^Bpn{cQ_b5$|# z7KmUOKZ?Icv`HX-I@C89E>|Wqh#38s)5m9aAz`cIkp!uRCSs zw33=b#lDqBtrocTdbrEhvd+2#OGA-ygJ+gP^tUv>gk-Y4?9zF^=v2Iyx}}T3O5Ig) zv+aWK*o`XOs3IsCaY`ix>TL(vj#OnDB#i^h%+lpJu)IvRK2Vwrfqs(RQHSkekwBem zHNM=aQg7Xje8kRlAQz`9g+lH&n?nOzJGM}1aL2{6Tc{|9NE-lVNk9^xQH$Am7XWX~k@t+X_F&9n>8)S3Ge}>1~R7A1kZSd;X z3~hhS(AF4eNUTziW4BwSen%@RQC};jhm*QQ`kKw9(^B;z@Jd@REmfbEs!vPRr={wz zz*6;;>~7Kekk;Z>z*GyIid=1`c zVyDbxml>uqNlAarsn^f>K~kby!YVO)3#T+5Q`>ucu-i#{V;#3TfW z^qxjg!FSydMnA6QT^Oow-KD4fxG3se^s%0FuHPVdx(hg>kkC?jtSC|S*z77GfO~ws z$Cp;b4_Qijj-L?!?xCbFJOzMQ<6e%C^1UE><64nx27Ct(PqiL9J$S{S70V&Fg|#%b zWwKS>7BbdMZP|V4>b4LQ(6u!RT8+}XD_s-4;b0R}YZfbdX z>Ve1t$x_m{FtvDMYQ9;82?GPpLhbx2>NkN4*+}>*eDH+Qz<2^)ecjOZ>j`bYX=wXR zLt9zxa#$k>lZ^y`yImt;kgo_c5n2&~<8uRUt4#!)LB}Qn13ono$Y$J!K?|wpZzEcg zg@QKU5ZzyNf3adsIj2DkpW_vvauzK-;AXe9Lk#%Wx6U)MQM&u@BgO10)7ltgC z^*A0km;@)l>Fq4rf)Gn5>tTzf12w`jI+;?UtcLtCQ>nr^~HECRQ!Y_?#*jhMHGq7{q zI?d3(LZNOFy2T1X+a%??=N2p0HhTzknJkblq0B4#{u$3T$h_UV%rb8VJ4ljw?5n4q%-g-c zbD6h$e=752Mowj(Y%8?H6J=DTG7p8y<&k-Pfm?4>4EZIyPeL)x_eCIvD+kUzhUvi( z7_3u=HtI8eDV{tj*^9f2x{h+=U>UQH8f(i8ARJH`N!VRB3gPYi7|jarD?uJ_YiZDy zXdYl`sRGm%+BU}^J=K$h6czj3= z4!nBIC`WlulsrqBw~q%w)?BAr=Z8RRHMv7E``wQTe2rkT{Rjf3-1vpn9(B*V#Rhdl zj6^fwAR$%jyGS>In=qB;>tE^l`g&H_{TRs3it7Y$fw6m@+0roqYbxRZ9YBo_Q**ZG zrsQU9UTikj=^Q1Ocqk4DyV0Vt%^<*oztsLLy;p@YtG8Zj-A>$-pVs zX>x*+VYsOgE|p$!Df4ikPdO>VWNC)FTlWdv=bZ4#El9@N%?DQdN$D=h(?f^-2zI4B zDn>~k>nQ>8LeIj%jNZGkN2Q+ay<6)UO&+GC->(*(jF=~)LC=tF4{x|s9HfUoGb@U z?R25&S4*C`#5+(*{*+gt#%-<12LSq;T3~`-4^uMCI#_@MxrP|UWLVxyQx9x}@dx(O z1$G;fx)TK4gkJ7`2-3sUki>)yVQTa401-t>1{lwIzTrI8WS9m+NJe#HcZ`9}SP!c6 zM@Sz-6BYw2JUu%%`{EN*^Y8`dzJbN1)sxM?W+@pywmdtvI=g&w^`5E4=<^;*2Igm1 zR+@k9rDU9czO)?cD@Vx)Hfed&M@e>0^qr@q4?vNA>ZhcCW@&MCYHo2Qf?t0(WDTfHaxeu$ER*~KF(&A$#)lAl{Sxp-n;AY+7*A^2@+wfXl^O12?_ zPR<=$Tw0zzIWx5~+boKtVlc3>4A)&6iEo@T7%8%?s54d}&wsK8%EaUv;TUDr7_xw1GD&T8!=^*;!x3mwGt&*p ztl1l*X0|g*t{j^NPMX&M2q3*d>0YAZHF6CEYeO zHn$-xY9Vr%lA%ZngKZVuhxrMcVIcm-u%Si-^9MDn3mf3A&8-2v zDG9(-XUIgE2HUUrU^_6xCDa)>+{5sMkS>ZmxSAKPC%Mn5cqOci8Wn=2WT2fpO7=)$ z4K7-72(I>|hzunoZV>pvf=eBUb>Vl)fao5!%b?qZ9hsH8Y4zEg0MO{&CSYZ?rMq*n z=m%~A;XjEbYrSe2u3yxs{tdFZr$$NtdRW=qFxQ_3au7CrC|EHf%(^kE_noNTcVhoa z0Uo~=g-<-eH;Fg1mG|5KWXpQ~o>k8~7%t=`g{`062^iY(Ec_tW%v_Nl`h9k1%??M+ ztP#6)MfhPJ%1EfmenSG;aaS}CiLQ3AxT~HVcVHMWj_l;oFeZr2Y_Voj$sVSUam==Q zPRrL{)`NR80a&Nl{*#JY(|oU(&|~>tdwix?bxL?QZ1gG&h%T#RP^6onWOw{5E?%CJ z?KA%Rnm_HI4|nV5)@zjwvYEHJs(a7Z6W|l}$}lA(MZeNmuO9USxOy7L7xs$0uRTf0 z3oL?`qCjZ@Q^=0N=H80m2*TUW_ z5r!uU@M-HU*!olb-jELxlPfmE3_LN5Uc5o%1FF13qA#^RnQRdkU6CneWP zbB00?M+6EAON+B7XO`wqEG)J`XqFuUU+>*zpczU=n{g9EPMm%cXZkF|Oczefugfw#byN&BOQ)EAVC3ZYc3Zh zV;l}UAmmv{#Xk9X2nOg{DfdQgB=4QxAe&>aiW=}9gr}&qty!}-M9pNRn|7+$zE0?a zYI>&RX*|1Y8mfA@Rf_kL-|x}WVQ3LNN|>I^n&x4#iTFf@caoAlprp>rN^`MMslc6y z*p5@AjCHwWWf=ItZ_Sg!L=~8b-=L_HXL!1e2$yy|DZX}6G0i&}DI{=+F$HaeQzpW0 z%^ZD@M8|Tc1;=v;@f|Fp(ihz8Q8KvJsC!knUZ0ECQkME)oUQ2t#`qd8iF*96VcY{h zh*_mDe(o#;tn|(Iz7(3DQa9fqn?tYEw;g(=p)F|Yz^@(g&sFE0HP>)}U@zo1gr026 z3}mSg5<9T8bTjUD4Cib|Fx5m0u#{ao-MkX9p-j8K*h5{}gUo<}E&19?SFp1Zc7{C| z7^J`MQh_ai(7OM`Js#daIv~+{Tlaqoh&>U0uYQkLD!F3opJPH$igt~1WtWCr(&pL> z)Lj}Ix4ZMod-Z0twKJ`H)3mGsvm+R|{V-y$INA(J;^`Jr(;B8}2Uq%e4YUNqv;+7% z-xKca#F%F952;m-obx}5Du*3v5aLYcY;Zm^_o9?l8eL#W|B%{Z#YQ@xCo-?YOkwD! z^?CyAf^R3u#-3ziht?VR+W$4CQDxz_F74J_DMec##ttIV>&+jIaw2O zK^KWLwR-2Dfjk79_9zQwhl`*TqlnHP7E6dhWHQxRGnS6nb~EMHeuxzVkb5FzNYgd} znF{VEOr`$B)!C+p=x#Anp5Yt&RbJ#zk;e zxt$mX&VD-)w8Xv-0&ysnG7P?}hFbz~$UpEa%kC*RaI4|2wq^m_+R;Q1K4JtRJiEFT zbN@r*z~c|1QKCSJ(=(ZqrxJD`V>;YQWlXt-fnF(43u zZaxAm-~S7*S|j5|xJHk-r<_KGwha~z*gi1O?9-G?U~(uXJ=|L@d64s9=<9FPOu;6W zA_*w+bHQ_YW%in5P61u`@n zWOIL3#;h#00ZP?2^~fr0iXIRAvtG%SYCJUIBSC@Nj5Bb*yS7$aPsT&L>qE)4N?jgR zL~v?eq2%~-MG`(aN)9EqRkyn(v0ZZ!1^@u~;m&r~r+>~)f@;tfE)9^zkdn6dPs$TK zgz?-%NX<&82qY04_&R>_ESxKDfV7&!(eiEYgXDOM84v2}=2WSjyX|*IqtPC^B&eBA>kBiBVg=`rC zp%Rh<(abu7Kt_X35a*DgI_p1=Y@0XEVQ9szxJ7yqqsUyKo5fCPl%-&*PTjz(pXqE? zHdq^Yal;KDrzoj1t%gs+F*N%=P(LXs7asEc4OvP`ytKa&Zl387k^>X8!(|n~?XN01 zIeGNe3$-mBy)&=|j|G0Cb`hj_@t7H03QBHpc|pL@mx5*g+(j`6=&BCsV?uzi6foAk zw4lg54qkmiW;RH;>|F#tfXl8V(S4r=x_B_6i*Df^JJhL?p-Zsw!dCsj+NGa*MDNLix34u0usju= zRJYR_Y|+Kww#x9pCzAA0r#&aD*?7;kgqonh+CiAmB3+c83GjsqHbJ^GW8_0|4voHb4@HlqN>zlf;Ly64ZJU1th=Vb5QP zdY0+gxWfYgeK~4o%Y$9o*nz>n84YfW4V!%&=$X~}vfg818M%o&4q)kt@S82n2Xb~j zi{n|=J?~BGIo%zQ*&*E>xT<#tfPLGqRLeI6fYlCs03zFHKy-YLpMKyb2v%1F=(e)vxIb$InDibEI0X>6|xm*D=TOoM4;Iq&WNL&IwTTx}9o_@dr zdY6{%+mBgw5xxXH1EF*a_|mWz7z5o-wT3<~Tb?%zo`$uU86a7*X;{nJinK{gPQzMq z1-wtS8&i`A(-fwShvIDg0P?sUKA$E}q-r|Da zD2p;2yc^%?%9ReYSQB*e5~x)=@!6K)@P~v-3!y>WPOZ{dWNXhi6cq^IJl(X2r6pc) zjn}fYf5!l8)@k)qlitIgyHVMcuYJ5IX!78fsUm4yu-dvzVdAiH!!T6_7*r;xg79nw ztFaSfsg@0JS-HWXR`LzxZC$Z2)^&QnShEVtOtnZz+@geMzDLTjhg-ewa{>?QX28Xy z;e9KVY^%G$S+D38ihh+kUeyht16HhBodCK)HV;0MkPO~bK`VdC51^(Ef~wXFZ^L&m zp6Uo&9w6?xD2_~Mx)HXmIA^h*$Pu^VQn%x=WRG7rRvyOcc!Y2^;P&Y=h{0U{T_Z{d zE^?xr=~d*{TrG!x2@p4x(b9%5;ohK9h&6r zp)DLdd3%Trz7;z(o%YONHl1u@J&R2USvHwC#Uf5@5sggVB-ujvy0VEAhtJk%w7{P& zazv27i;I^4pWT5Uh8zK37m<^^2@xOs(jq5$hb9hR7m*XnNkhst4&Hw5Dr+VbV;5m& z3u;o3@xg6XZ*m4~yyq@XE13>1>)FzS@7o}oqwk0eG^?58*J`t$k{p^~36_5cMIMHq zAvr2K%_I)9m?Eh0Nm~;V7XKid=iweY#~03!t}u?S*6Jj$wTd>Y&sPzheH7 z##e$5el=QG$-X}HGD=3l*$Qus_JepVPR0i~-TU5y{pg(TLqEd^B9l>`DIbIRMPo@< zsj8f~k*1Fm&|ynOGEocJC8Olkl=S1Jh7N822Aa&n%)!yQayz6sd484Ei0;zVWTmE_ z+M6iJmt8vJm&DAZskcO2q<4qj1Q&iQuaHb^w)elNXfND-o(UO74e_ft$mSst+LTvM z$M@j7giP>&5#~;00>rXIUKBE+ZC-{>{)1}m z4t;^m>kB^xkLv|_~b&26*e5%R!k0}`xXo@f? zH`LK6BV(XWg2B1VMWa9iA5v^?u(i^}--hgI)>d%$WALXRhgBo{v(5M2*&;dlR^oWi zl2|m^sE0la7p`LHj*4vz`KD>p+J{nA_X!hWhz;E*;Fk?tWBlaSND!K?r^Wdn`a1Rm zL3&#$9QLV$Pe@_&;FJtFr>Gl16f}aNz12+`AYXHWx+`4{Yu!D&7MJNo4Ovn$SPFy0 z5*=70k=>kiu}It?n@?wvQ&>Uk>9I><@pSeh8XP7+~4BR z+zu7i@F2YWJUk$GE%!xu{5?G2DzV&`;qe4K{x>|}im)8i{m*>`x??p^@y6@i*WuT1 zz~h_n=7sRrKf&W$_~l2w|NZZOAMZfHiC#AD04zU!9C6Xs!Y0!#_S`wiAV^Be$h;e* zj<~l*URoWQgEk~jV%XeJ2A}o(ScHu(@)#T3#OQ4BKaK|P_Ow13^(^ThlkLp_`tzt+ zw*mU=4tq{UBHMF`?FVOAGLnI$zS=%OiMN_FB#K-9Y>}AxA~W3(Bm>O<7Qx)ks%G0i zF`7)kY0g8_8l+VpuimPU9b5e1EeS*U2i4Ypy107OR^D+-Q7`Whr;Xx7AO}UzcaN>(Sh*Oj_nh#}clOkFPxHqw*%akXT1&Qla;mAH>Q8RN`Oy3Rbmg?Pb= zkMHbt)V1a?W(;a+M$ApD4a zn{GJ3;pXr(xuj8$%rCva1#J6+mqL_Uy{Xl!i%K!tNYioj3K=n!rsDt)0Tto40L$YC z*(@6sMjs%xdSz5uS2wwutlstuBcZYUgB{4cSbJYDxGwF6!^;qmJSDr9g7S%~M^^*a zJr;PSu&fN!?s^Ldkc2ui&-`9zXLn@o(j8hEi^0^{NZcI734;uj@v;Tba!&=Ev3GEmeU!B-mBZJ48F**{lLz=`nJGL-ZN{<-*ZQjVPsvU%-3 z994HzbVM3fI^-p0!MmblNcz+oz$_(0bBl|!%O@9?j?A(v9K>E2?;PN~4(O8MTJ|^K z)gekoR_TYf{bR(ay;zLKv^-Oedo{9ff6VM?_hMZDq=CoHS z1#bK2%=lqu^AK>kG9O}v`hhr%!$D5iKSMa{qLXNbGC`UsJ^@bbubI?2WR&FZaq6cR zoDL6qhG%Q>XlX*3z|1=t4K{~Y1Rz5^6w)y;A-WJ4K_+|zScG@7^YN7Q1@5{p9h* z$rUSpRmqa(0kNg)1gbGxf}9dO*B+rH@6~75YxIJ$t&uP&$p>z&;uHnMmmbmAz9Ir# zK09xcKvsN#z3O_w!s{5IO2W`!h@q)Un`NYM{AMdhmavnQ9C*k%>l7+ZwOlybsNxxJ zr!rTiZg7e(iN+cjoc4H&1XU|XfQjZ?S)WoeflxK5S1Ftdp{mtDo+Z&?Z{2&TAS8)M z$)^w(YOM*RzwQQQ(elz#!L^U#+>GLYl76>Jg9|IJkVw+}Oq;VXzrI?7woN`vuUMdc zsMer!r>55GZdE{ciP@Nve9>R8HKbY{U4+1HiJ)BNtW!K4NfVjdbaEh(OF?(O9lO-C z;*4LdH`d*56*Q12>)LnPvEEQv1+@MmSEvE2`2&Gj$-%L3fwzp*lH_ILO7w4$NQ8m; zIwXjRzB6v8LSlq3AuE&#>(W;2&T0{d%Pw6Cj<~0sM&&XJi}8q-jtA~m$t?@1@gl(T zR#ew#J=+yjmf0NvvMZJ>HH*i4twk?8RHc)Ra8l+6rA)Rg>oAyNQ=exj4C@g^@%X!fKJ5nL=SW+RK%r8GT*= zQh1z~9dAo9tu5YCX|*&$j#~3Kev5 zwXXfHmE66qCz_VTl8Ll?T|R1Ni)Tx0T*r1Ef!Vu=jd1WJEp**vG_5WUZb7@L9|A^# z&KOJmkd{b*t&4LRvZg`qT(%6tqTw&lHa;RIDP|e|ZF7hZDo_6Y( z2w}0iZtE4vB1GvGJ?mMl5HO4x2_6m;{-E2H9|-+7ylw3|w%vUR(5#M@#ny_Af@^;Ac_3UvdwbVM!) z+r?sGlkB1h3AKR;DRXlB-iE5W6p25E0;19Vz}DxZ!9} zv#GL7m1U|dQ)Q`$0ElCeT&yG*-l?)w)L693QA(9%=(S@lY*b%)N_Ncn>udhBe?H8^ z!-PNZ?%xlTm~iy&`qwAuP~qUiIhh>WoEB%HV=wn@UFWK&WC>&rXM&tvowEVVNvwd*Ic|r z%*3`Q#P){)NKv_2;_~Ys-XNQOEJHoi!|BPPCO{{1&)?-oIr% zU-d1OZ4KtuE)S76x>x#RfsqlU<%=*5JN-R&w zwtKz6S%GS6blKf#xOECfPrrp#cEi)`tujjTxB)Q5wg7}NA*s+Co(Ut13+3cj2O-hh zInORFHk|Cg;d(sBcxd)I2~)xv3Z!F9ofHz&h?*+}O`f^@b` z=^97j#>BE(@|wR!gqB5I{ofk+Msd-J)0X;3#k;m?U0m zsm3V1gYn0pxJdEh`hWr@)5VMIWDpS1SbNAVsyE7wn1G7=?^I3S)GQUcGBKn=R~7ZV z;`Z@wINL0A_bxOl)Wd+}QO~XLx?pqbwaNzB%tK5tDL{F{e@_s$BCMAMMrENXVTH=Z z4usV9Fr>EzC?P1g=SfQP5MDgu_#&>B5RrsQT#p{Y-d!TfCFjqAefd8&$mYIJpcE0n zN#b(fCpO6Df!|e$nH&CxY$D5cp)UV;mm2R0n6y<}GD_8I>o1$Lx@3?|1}CcoWmGDE zNyz{#&;lGyjgVzK0J)Q`YV$!>xiv;zjg`}O#Bhs{Bw)6gMsqC8sU(Bk2#^!ATH+)G zSHI-GrY9l15hm10Ep25I;$#=$FEKkB$KLyfsDX?!(~2fv#mstEt5?GT8`kXo?E}Ql z_Zkx8SkJ!~^~{k4>tZkyQhncqsWdxUvCDbI>HEwK)Azs}`5rl$cnDpaA><;pjsS%y z)yK4zC>A;bdcJ{0;o1q&Fwt-W7JOI3obq_eD9Z=?7aXg;yX}0P29CylI zwLDw$sIyj)%l%TaqwWT0y`o!i!?#d7q}j;Ns1)msFHJC@WL%rd&Lx_rH~wU^*s;y| z4}<4ATL;dRCVT?tGZKz)+={r-ozfdz@dG+nJ>@G4=gRUk*@*4ueI?*sGF&O?EBckj zIxFz1G+uASV$aM-iW#6cz5$9svqMeFwiEvdAFwhzEp3f!o@l(@_y&rVs$kAbfhHIh z4z1Kx*g@S@bRc70M;nmoJn;>b5C*do#u$Jyx&p^-DX-&J13)~kd4SZsMN6gWio7%} zU8ZZ4CRbnmtN7tRSty~LPRKG3RZ&7+X|f(#&`k8hu1usLTNc3>m*@`>M3_Z2ptPtM zS2RF5h>f(Um=nlFDHAIkrbWfr0a+xUw5V7c>2;wUVWKcBS7ul5MCRnQxG_Z5blTK# zzPiP)xQd-SMNzTPy&0iCbt=pLxf#C^-h`lZZJzxnM%Siy-mjLsw2F)!F{ZoeKDYu0}GDPFlN0iY1svM;_tHlO`TQ!`3- zlwI25S7MV`M>qa!LPvE|M>1cT*z(4I1)xoi1Gv}Yb(gNTkYGEa_t~FJ8YkV*YT~JM z)B0-Iv}V;LP01xU{v@QX243liTQ3G)je5Sg){YBdloS^eup5J*mo!4FEXN^un6YUq zW`b?SNUaUQx0|5uSC~~L$&U@PIeZ65h?{N#Y2ydfvb#H!-CaCBV1Gsep&fkW$_=k% zLcz2WW)Q=;adOl1JKvtV>G`s{Z6XiA_5f;Hb|6-%X;UE_Ar00e6~b485FYxT$Q-)q zrj&tfZO3$PvI$jJ@7|=$KsUZDyZ|>($;ixUC!oiDuS$-`s)sR zHdz!5=Fdkx^9TY&ELfQW1Ma^XHM7QjVx}kq=-X}gocSWsiy?;3dQPh?r`49jq+77> z^GLbmqr(mF-W1wGoSQ#3SJJ?8|axq7|fQu6es+87Ucfm86{O`+md&lK=VSPTF0 z=2u$VYY>GUU^|gYFK}Q?P)SS`-2AgfFE9m9R#Lz^4B&hy$B62XOx*VW*~W zSm;zvxk$=f{ENg9u(bCX&fxBYGr0R$g_#)t?9a-IE)?+_Wb@#A*kJIv`T{u)(+1fr zfY{HxDq=KSO~EcIH`N8&5Bh)qy>0ire+l5)e;+nfa(TRGTY z+;+A0qmoFT)?c*0TAxAnV+b&@)%rrzvqXH!920z8S%6i|6D@ zC=44yaN72~?`u|gKA`publ3pqKajKQd1u?$IIuUV=Tz~^?2zVJUGaHV29YxaytvXf zlZ7U@!Is{?4fH9ysWxUpu*L^I0MUp2SsXhL8HK?-$InZh3=7)BbunClEBc9b?k;lDkVi^{->kk_->Tui$104@hyZk&KtVQ)gs zn2NLJRt%ZBh0kq}&0T*OA)8|#%*9Vr(qD3@v*MZx(-+v*nJ!u~8o|BdQf28JJ|qoE z4(7PxQtN3#l&izKjD;sQ$Yw9on98_S@9i68bDQ#2;R#B{*PP;+a^N?rP(HyAOo;xL z9??%wGQ8$PX`IAfzH8`3b`dyIqlHb3g#i?kWw+`E4t1wh^8$flYr~LFAqhQ!+LdMWZB#gpj}j z&p{n}HzDKzCAo8_J?dhoN^(7X4WMIB1S1~{f2AaM|2=c7vxeqRH#Q%rc;(adSl}4a z2@hXq>|$_!?$|x6Cyy;pvD`lOEN(RR(OWh{P%yVn7#k`i=rPz|a)L7n7ygbVa?5G$1USs3l znpZVVd(qtb_}rpt*2~7$eSY9n%O=*l&)j}#d1~>PiT55fx4+<4D*ibG;(y%S{(;%~ z`K9{}?bnR$bLGHw4Q1&LpE5T;wmdt#Xc+w=WApsFQ+BJ=F?3Khcd#&ZY<6*V%FqGa zN};Fv-r@zvH2t&Y)-w-GnP&e|bL+KA!$f(T=GN2mCrotrN@MH3rQ=gCHn#scP>5`| zLUu+F)1diUi&0WCyc#&wdd&&kYVksX0u-h$YllID&(Ue(^7zo@l*D&QovG?6rf0nV2Yetr}eFB6{Ika>f>1v0TPa4FfL zGDC4$+q6S78L9Fe2bGdM+M&43tq_1X5Z~v}xbq=_*w*0#zcayU7=Ss?qhAYnvYse> zjC+_#1B@Y3C4a2lVGi%Hna6m1nD)o{J)3cQ*BwuspSE>_cKsprZ3_0M0o{mE08{C~ z*(?6wEG0vjfXQN@QW}>m!MiUMBe}rkG6v_2_CjJ&=EA2z(}=jAtyl;p=%*1TbzJAu zlne?H9RY7U0uww*BjBBrVWhC_Aqr106q+Y743pqPv_Hn*CykNHPnn=o`FZ8b&keHq zoKeZR{g^m6y=~d8`2n4&z-5PcrxWC=%z$E5CE&=y1XGv{wV7d5`%M$@KF9*HyD|_( z7T^PAQsi?WPC{N{X!{aFTS|uAAn=0)w_bNl;iTt4JVOV8Q7a@?9b+>PcU{V8HsuvC ztza@1SQ&qmHMp}dOl4^2_RHraNqb9C4EFoRJ}s?)nK;0py&% zO9Zuc;Ry?N>8H{gIQX6|%Q=N4nhtUew=DPO!0#GzZ*U=%7{X=;9>fnoWyyqM(z)UB zZQUo3vVY(cz!C@6F3aHiUtl+Q``3uFX_3d1rqzDW4CdsXe==IF9%O(X{I_l?Fzxz- z#!uL489#yDXO^3AfSFMSYT6R`_P<~Y;Oio_+al*pI1OO6E-qfe`oiKd;xgqyGf^Pm z>mqVOZcL;cG5DoL4&&*|gq%=LCLw44^%3PrCb+4L22%-wQM4r~WM)t z$pwuMZoQxn=tep)?cC0(+!I7x1`pls^_=1Da747?&xuqVMXxjtTJ@=Q4I2#4OYSCGDyGD&$ zg(Q$3*Rv_T!#JgFFr^v4O5Lh_BcxdRPI&AR%<8v{vl@?6NQ|Ckfz=*UeHbvS%OuLk zxAt*G1DK{tSR%h{zTl8uO;g1lHM0hLj@?Nn!w?CVd=Gak;q`tr?e^>Y1D|oC?9yfT zROpf)1@Aq=B3~C_mn*@7Zieg5S$CmPp`W>EV-Ubt@z%Ep z2r`um!F5n7vS+lc>Fy) zz66gi!vjt_=I|W%Kfqs5MkWXM$6*1u+}GfrUx&vx;PFi$l^4Qa{{#;>mimlG(PzaO zUM_3i5SYZU!f-1e~p{c z)(VX67n>AVYW_=hACUIk%lQ{oPhqr#O~BiiCsW( zdF+(j`@v4>W2HR7P8out_9NrmP8lk4J7r|XskqgW6U?4lGyabhi^ zVS{Ym`WkC1Wss5)zXp}9JiiK+_OZV%Z0g?niyX#GD~y!vT#^UnGZtV=yZpQef8WgV z>=diS#7pq^oj86({t4>3%}g!M%+5E5HicCNNj0~=H8x2}a#OfpP>g|TM zZ%=6ZtA@6}YG^BmwmGa3go)+L5bkzM`R`V)55|!d*g;?}Q5=~~M-+0G9SW18Wap(q z;DxKh@d;%Z(yIQQ)ZS04`iJ{AGAS7YQ=WSat<$-zYH3^nWnzD`VmjOuHK5FEVgu7jtXO5Mf% zm)k}lx%hpN&XZ^bKp%mPv#{Z6((y8@qht1f@8*R;CBSLW2;tskgnKO3_R^yKNR!=n z=&ov`QaO0tbqAY%hILSy0tIG`vE_Lh+>~~WZg~b=Fk~T3^{F_)L)r;4LlP{5+pY&0 zuRPig^f!(ZJmS`ifmZ`VI$@r>*txUT9Zkrq+*N{y+Xe~REu_^v(TCQ~a|q`-)u5;S zAU4Go8Ebn$^EN2ksULEr(FU2slryW7Z@LwwNLYMduKpC{D#)Qhm; zb$5Nu4eBUGVz`y0-EH&QD#y3J&gdo_z^K{*>{@C4A|cmZ+QjYnIVcNx-X<&i)<-b% zU{LNb&T!eKIMYZd#1v9U5L!Top{zlZRA~pu0he~tF_G;Pt^6@ zbbr=xix!HNIc}@A2`lEf{33B z%bxcFzSnp0oi2@gN7I}yaVGa|Pf{`nncN73D1|8PUYMm%!m*`j=Bh1}UeMABh?iGN zDp|wPi~YycPv)Ia8lBuvNiXcJumN-;6skAeJ`BrbIu#FS+RX|LRoo(VOSsV#!H*_F>~E3~1vga5oV%4>J#+r(~~!eZpIx)ThO7`=$}y>f%6guFJ4% zBeh%y`O3HVMr+tDqO(Pya@9MU1CuU5hfi4|KrAb5oHQG{*@Q^5q2u{WX*P5M_oUg- zz(Z)t!Q*3*NSCFlPT`?WRBwDql*sJ%FSg%v>Jc=pg6;m{W%3Aa`v!OfnRnwl!`0oG z^Nbe_g3U$APRWuv?F6*oRvT=qFY*Hv`8r?{d{CI0lBL0ub9(3J7V*Lyo|@A$J+%x_ z;J>q!jNY@fJon(z;_B4=$?2(OoqquNIk&Uq4y8A6`|raCzZ221MB=yq4!rs(zEZb^ z>N%#ie_&|)2ZpvrTQ4y`2jR9%(~D2H-L#(ZW_rMU9tB1a58Qdv_z+=)#q#``ey z;q*Js=LvyV_WTsh=dnB8A+0pdqlcY>1S8p6D=^t@I3w6;&pmjPdUDSqOUpVQ$Bv@t zlpWij1bGxDGUyk+=Q~JqG4D1_%uyN|61AE3?&48aYf4nxCvtOJ#d_tPV7mQ7QesY? zk`X8iFymLxx&d_qN^%YAu?k|5idMvfHpu4lZWbzLA}g=-eF4e zMFwKTW%6q3_*V)t8&pD^%&dh+dXP~%8Iqdr&8pH?!dxcP{dtAvVE*Lsz%RP>`l55z zD`R?o7~F>11drX6?l;nilQKCtO9~U0v}i0$?e?ZF@ZO=R;Pheq#%^s;8@_5SXom_ z4v45lIq*t_qF-sOSL?V3 zTey`uOdwE>%Q6Gin8l4pmVBUW`%1&OP!H48)^G*#5MF_78243%ap7Lwq1R|}HOzKy zmGd1Y8)S2s-H@P~?=Z`uRkyv?Jm29P^e_+KkkIyKL))7TZH;lTo#<5T#IBWIJJRKF zt2zcG-Jx%m?!Tq`Z)8(VQfW0Jv>(#_H%Uof!uXavYI@1q)o{t$^F9nVtvJiSeT6#I zD<1VK)D57jec;3Oons#ak(Ch6yW@cbn^idKz2K;`OOk}O5VswzkK|-O0njm_5wlC~ zcyNPk-uRZ7ebDhpH@?L%5+xJsP?HlYHnCjsmSaZ}hu!i2v-jp2Of}xkc0#XTLLjAkB~eF{JwMQ-dokTtLj#_dc2Ive~dNLT~((} zojQA+bFxfoTVI5riBRJot6_9O0vYe&yT2VZRm)YjzhnP&%_!p{)vSRp{Uv{4}~?!o9RAbR9M{&pYF; zY-27Z4-t!JU{&Y~L505l^`JtdNV-1$5?UlCaEG=}BMRv(y8K(vUA09mG_MB*HR}dV zs%AW&=}XZB;fw$#tCig-d-2OE-E>E&n_@G!=CmVdH!PO;{OeWu%m=nko&tt|Oxlf|KHf zEJv!3l6BB@9a`=2-XqMmC*pHDk+&lhQ}`uSGVLCr*@zG}iJsg|EF7AL3Bo6Ly-Tx) z7UrgzS0Q}8RqqMd!yx8CLgB*f0jqcq%leOTmOaq7W6u~uD<3G!uH6w<><*p@64oE zE%KL!Pt#2exMxeAU!RI%x|N_9stU7FrLYcJrLc>D5FrC*8UX;^$PrSU1fmLc%dW{K zeBltPmR+~c;gbmby_1se+vk>UuUDeDq6sw|_B@D`AXgS4`)v>J9~)9R{uO?(@(%K` zP~<^3_T!p$Kdu>jo=Pgf-K>(jS#~T;VQoYXZtICsSaCNkE3B$$Co*#ghe}fmb>0iq zb64d>7@OHDtVmu`cFbx-aAFWFQ6)RVXWq7w14+Qp+Ig-nszVp9!uqU3g2Jj2)lKP1 zWE{9=&m&@fsUWW9H+BznzxMXvO;RbycbtP)o^UeVaGjnP3rdb+Qv{jo^b{Tvw_W-oV-? zuJ7oO)JCCXSlH8@$0Xo~Iw&QB!dH!91pnx^xNo%qC8j-5wt**h-Ty!^fpkLP%A|Hf zu1soUUymU|WC_52JK4<%9m^b-pqh8S6@EaU!_K$E59nIhxgUPq&$LWr;Cfgoxhj*Z zl=99wC@Tj|f>4*`e@Y#mpFTc$c<#udc|K{v>*b~<1!RnU9iVR1l|wvjyF7*`QFk%g z<+BrZdFaU8@@(__Y-(EAPOuXdd0&Jy8=#*(nnydLlhv&iX$UdWemg>3B1Hf8_s7s5 zzYvM^&@`U5zaRLM)V{bON6BDtoD*K=Tnx7O6-wyQL`gSx`NCO@Na>mcQkpyr!JFHg zC#EJR#^ZUD22Ie*i{-saIc@(I{n&;V?@gcj?FpFTtYz0P{nD<4FW22r*t_P{Ju=tM z$6}NbXBwKM?pX0lp;lK16SlNdGEVaW7-q3HpY@7aghx5q0!oW=tRcF16`z z_%tP(vo0MMh^AUhN3H8(+&rjJp_~eu`AipSjs~)aH$n(OgN%OGR9QL6mKZ$fqzs8T z22g-_mV2E><1 zZTK7TvtCXome$=12f24yJ|F&73Xf&Vb)vvN6}}Lj3U_rerYv4%@#d$!(lnsd4BPuAHGi~h6>(#A-8wN5PkRuV$Azxz?q%9$ALWGzrreTS z%(z7=BsNm$#qOWZrClt|3rcbj9#qxh-TUPPzANaFl#FD8Mbqcza>aOU-S~ke1is)7 zbne5l<_)1QU_5)j3SW>0l=gl_lro{&iI)nvxxTt7eoc-LO1AMj54p^o=VWrlY>>s8 zfGCB4Y7#iu_jk*rcEtyx-GnnF7~{5Vfh}8L%NE$O1@%JJmMwrw5%;^sC6$pI&8$^e zOH;2o58d9s1!M5aOROY|zl*oU1sW6^p~ffHQP6dxVp@)E;)_U>n(~Mt+r$^NL16tc z0VuL(EhX9th$5;kT>E?P-!i*TWiW1@a4IgC;MQ2g3&$ArLlKh~U9s8=$5@)`D;SVA zlnz$JM%WM44=ZBTveFhAR>;bbcoG~>R>Vred)8P)s)|%FUHu+rEbjd-a;-i}MsLpf zPT+K%EtK+53KsS<)f z$!6HjB%gZGEmz%&@PL2C4DKQ8Qpk%cHj($A-ewBa*&6=^4^dp4O{aHQ5zTd~sRBWjq**i?p6k`hNK1es*xu6F6 z-Ig(l7g;Gm0fW|uB%;cg=dHPD$iDj%xKBSz2$EjL;4{_rUpHQ<;}ZLh+Y2R9i503M>$gHRc3ljF>TUKy*$ZVQ6k$fASr8`FQiJq(@VYe! zD@wLBxc)08uUJVkK23Au2hp!Rhzm>o+BbfZlHROKZ*f`4pg3>Pq)PZM)oad=QA*Kvk}H_s0gNY zs_$p5RaEPDLnXZ@!kXScY;_eQa>R8`@ zpiFAlyjrFZz$8Onm72_Qic1NtK?R4`5cXxRu!TO`~Q~~ z=7FQp98G~8s8&+2_d{*wz)FjQ4Ve<1`_)^pl7H;Z?izfsrwM;(_Zgn#Dx; zrZnFK1uCz4hGy(DG-E00p&oVe>ftv*ow=abWW&;w^yVsa zPDS&i;-;l{g)&ohmt{9 zA%0s;H_>rV(h@di7hMMsIW}h3D0bFf%&uph;1rj#C5YKUcL?;0-{$$J@?Mq;OVjH| z7W9&EG?=+*G1z?`qU?R=Awps7P0Wig^;zj;;QJ_9cSgjde1<=iN-~rWst9CXfJS52 z+aL(WtvII?h#rg=F-<2fiXp4QsnU~Pyh}|eRRKkRriHh69LF1j3#Z*GxQ~LTknKde zRn7Y)9NS_?B{p`u8pZwF)!NRZTKjJpm6c(fT6%YJ?H=YGZAKoG1w6Y)lV+a5FRa4M z{o|`P^TDQP4zv>uHmvF(-g&D!tbNsil3!3goDC$KpjSu)$56GDaj47KKi)_wPaX#& zHn@2Wvy@3K2%t&F?*BDVW0j(-k3qm*?@K2bzg9B=EY2cf(y>piDB1XRtw+hmuhYt) z#N^BI>jLBRsFQEDpakL{MA0})@0SWWSYRDmw_)y9^8!gXzh&;0x!0mvFk(_Nx0Bc0 zG^kGg*rafa?e-jx#z&k)NFs?WeHAE zV}MuGH+6Lco?b0B0(YsP{xoxvH$95xS;7kIK_(uFt6A+|2Z@rc!@F#nA}g>o6Sgt} zTj7aCO_S01btVX7{$+u$HG?a&jo=dKNej40dzY}Pid9uESXBkD`1`a%HrZi@F5#A= zd+*c8R-C!z=w8yyH?c}o&9IX|PHAVRWC&Pq%WnT5>ZV!4vMkH8E?AbOW)~23>#ews zpFY`~wu9eRg@-m^z6s9S!sEEEyUUuSj|r@g+5@>HwS0aj06ZbsU|~){Z{3n z9&n(ER^_2?W-C#wM7iK3%DSI2f1N(dg5?_q{NJbsgOG1XNw0ghI;4;208%%E3=Rvhe$yYSPfU^91EW64CJ@mP&KxaeD|w6cwr#;&(c60AKJbrZ zAl$%@*$X66g)NU4aZylFY}fF5fyK(>i5F%&mFt!4`j4w7BWEf;f}Lqlz<6+}8BW z6E6XnCq9M)rOpOxS=TWU`$FPEcpRYvv^_PlL;uVvF@kg zCxMd+KDpwmGO0c5Q25CeS43k*f2B-neO=)vqpxJ2P_m092ju9vMKAA83O8oxLW|NOS`qr zm`l1Dm*!g&0f0-|aWj5FdFG&#$OUb~_FI{HiaC$rxW(ZnsEKVX#3AhIUGU?B%_AL~ zM0Y%xG_&ncE%xjFt5w7E-?un(!0I{CH_*m6qM5~yzL|9J{}v51CRTj7(jY3uRgqYK z)bz|9-vm-mp82QI%)+8UhK3qLoz1&il3T1>Ew=6qtmoiD@EmkL0D4*n^YQgjGBkP8 z@#&O9ohj;-No}{8dPd3av{y)-a4OXG&ld8jyPfo@idRfI#iBn5i9;&Vny*3BQDKR$nCZjO@Sv{$5Vk+SXK)D$YP;vXsL z9iO{x{Ej7bAxyo+cyADbPW_{LXQ_XL6J~0Ipvj=!jyt=Tl64t}Iu$plFeOLOhhdtA zqD8oF{UM3c2b8#}x8av0=M5kJ7UBVs1^U7ArZgsDXfKb@c=tUT#WyX7ZksRO{H(x(lZTkfCH4`CKDS1Nj5y@$@uc ze_Q#W5QkSN@MBm*N{UneszIBU@BIRrale35OZ7EaeqF_-hk^X?YXT3#-*wg$%m3G@ zk$BCvwcyoERDA*Rv8+ocBv(*$0C3bP5inL!Pa|?m9V*NK9sz)3SG`GKM*vvK6zv5R zsv0f}w=o9f6ccDlj1E*9hnoU8^^bUF8WSCk9sm>>Rt!L$je^4~jl)d=G&^blP-KWL z02m+MUI5o+Tm5_(l@2Q<&QPKw&O2l`2r-vh{$EvV*{doe)z8Im*6fE|tOMl71RsV@-Wv_+~9@-h@PqL@$;N;3E38NVI8)B1zda#5z6OI9KqA zPeTN;IQ`A~0PgS-gj>@P!Ci7GC7aS-q2v|aB2A?sw3{k;88>gBam<((Xz!$Cpb{;M z_l;{0qRoQ1d?tROF&c;w$twV|D=`E*Q@}5-@8}>r-6Isylnn8W-g%6D6W$BqzeHP$ zk^%nB1SM)KYO=csA;XmPBfcV^SUYwEB_pq6k5@zx%cM3_rKBH%u*@h0EVN@mb$v@% zZ~zvZ^zzk0JR&Bhtr{O1LJi;Uychr3c*Kyd*NJryJNLnHcfOsHt&?+ym!_ANk1s49 zUYK57zT^1h;rZq1+n2+T@YXGi9H3@qCr_ITDIq}KM!uIB&o4MMOd#NB6i2)PCgW*M z!G2NA#2?|bgL!ZgJh?c69sYV88*kEL<01iU6Lh@I2ptfN{L>h1)=>&2FY>FYbT)Oy zU0Ep=fY(&>ZY5QrPBG*7nd3Yiq=E*K=cmvs45m~N-43Zn^aDkdWz0M@;qV#UN8CV) zv#FVP)X}gA4bX-rQVur@LfvjfSA})vy+CKutOK0jT;c>D)Jy;nvPia+{HOjNzQ96k zQby!EXL!I?I>ijstdRH5VhH}%7@-KaPZMsQsft!)I0mNzKnKu(WCPxzK)=9PFN@QKzN#~JaKW3GaD;e zfVr`+tA+p1;Pdarpp6SRV=+4RJ(%usoKB<=*u&36atQfs^v%Sc3nHYkse=WjoSF?| z#}OMAD2LKvmcd6yg!(P~U=Ioai6VVyJtfvRP=_nLwd{7t)Yb^qPm*uoNoVj{4q*#K ziC#BbAWCFHrWb4NH8rWbvwf6ohH|)*zUxpI3-TRwikZCYQ?f;QBN)1wZii z7}`Vq5kG?;Z^19bG`s_EfsgLjjD?3Jy0O2b8T&g4W0^;Y6Qv0AI}*meQ?u?nHDk3B zbR!<+Mx0uz^&WT&B|~9f+q4-I@Sv5scow*%$}k(Pqr5wh$+w47wBN{7 z-~p(e)w*m--^K81Ku^+{yB-EpOv=f0c*S9>qJXoRnE@!C7-vrEeUN|0Lx~TI7ornr z2UqL*S~N_Q2nL44D$LyVFm5$*W=;&EDX)c@Jq}cT1uI}6y>vZ{_)z1y>&FqoL|n24 zZR%m&$g~@dhk>OT#;R8|ajMo>t|R0NR~g-RKe+D#dX5ngDr)^KRZA)p`!S#^WsNxY z#!K-QNXOoIDd$%W>ryh3Muj*dcBzuibMUex4 zg&TVCS*qCrK@p$r$l{!Oj|Z<#nypM~TRx(mV9Q6~3m=tij)Ak~AyIqaTi@~!che;% zOXE>(`Fym9fDT=boMj<(n6m!1wf;&1FNjnKZ+WOpYFk+vT8x+JZV(&RE4_G(scKeZ z5mH#qSR)HE36U%QvJkcDqh!l?HtV}tEaNa!EvBKI10)zh6yPK<>I8qoL7$tSA^*UA zh3Y>y4hLY)c-K{N4=9XH{S2Cfn}Yzr%qtKKE;?FYNu6nfD-AIdy$vf3kus?bb;;-g zS8B-6i0>&Wvq4=*fX%;pnG@_x-WxlUkYeDx)JYR;EK3jKSQf{s^Cj56TFaMU>$03K z`MT;v3AS!)i4q4ZqHquQ8Bv9Gu3P7NO^^_ACSVe^TKmrRjT5Cp@u=hH;2F=1=Px;@ z!GGQ{sS;`pXk^7qRKdT4UoaMYkYy0~k)&*-b3thl9sDAU-LGbwolsdPcs~=>)Mh22-d3EFjFhegxM<`slkp%v$UZ0W;cV4!%yf{05;IiG9P0t@W zblEWkU6UJ*pl@fj;5g`QMcnoW^@tl}uSeCZ8(VjSD5iN+X@Ol2&H{lfsYT-85`5t( zejz3j2h;G8rdrnEsf4j!Y~471ds&NG`N857m_f>j5K1u0U8oGo)3KFA6r5HjXtS|# zD_a~34^&9jamn=^@;77`Poh{mE57+> z(#=?AK_eE+{4DdUd)g;363hI$Asq>!D3`U(CgEjwWr#THe$3sXPgipDI9iu6%3yx?SW#Vi(R zbv#PCG7d&mc)p^v)acEhPH^gqCneOx2o9l4YCAv9-9(A6v~GR`MzEMrGXee`H^QES z>V;D0L8~+GeAH;>9ehzS`l-`!0w0p;jtH`Kw9DSrzzp z+^F4UYw)#^a!irKU)8qp@Dk1!kdu6;8D(?$+K8NhvJ)wXFaE?L$CT%A_}Yk^fafG3 zXUCP%wHFn9O*3LV&>g#F!*m)k8^#5TsMx6317kA49(0U*$0hY*))a{ecOOJnC%QRw zl6VJnA>8rLGHhsJhG9Ed9!oQ-0m~}v`Y*uA&7TPxboWtmDJzA#=wx!g0+pbfxTpcV&W()L31hOlr3@Q63h!Hxm;)3!)p{*xiVb*3+dntmElY33)@5 zTmt3xp%}uhefxIJ1^-S>K*7qC3#6}eMIO&#G3?J{2k+wOcPiQK_5}iM<5ur;r;lHK6sk@JQ%^A z{J^i*MxQ+YzoB0Hm8cDsN$vTp(ncR87aeellw$qS#Zo%x_d`j)UrML4@R3S^617=$ z({01W!c1V%uY~gU2MLZSAt#)Y4Y)Ky6@Y}3OO=FM{u4h_b!^+fHyBKn0Eh^=;1LV4 zkBh|>ShYqVh+2>21y#rJl%K2kqp0=4pM(+~E}u=<|#3}da3 zh<-!#174uENQ+PQ<}RaTUCHs?BGna%pSxDGIwb?Fa>48kiMG+7&`ta7^AHrfg3Te&-iE%>*=@qojzWTdl6V`3QI(R2I z7IebaI{WG{g(Vq274b7uUC1V^*P+T(eyzQNKes#%60zf5NI`v+tUus;)e_``1#T^9 zZ*w0AO`Z}a4R;>8q|t~qk*Wd3mPu{TtGEHS6`8?SoPY~ak-Fi?#(o#S5IP6B(*maJ z+z(;C&RfAkpk&*TrRl}vhsNi}4@@7Lo?lKKSUh}WAvHIdhY3K=5fQoY@wb zn$^q}Hh&t?qGIEqU+iI7P^zyqrC*S7pxd$gm@cQP^|E8askkgr4m3r`6w4K}?Tv%V z!*c>rSanCl29wlQ-LdKp=K6jU#gB%iGJ5%G1G*Bz2Ugt?FP-(i*iAUCPTF34(h5MPjU-`+J`AI_~e;hW;Lw>!tShBqZa^zo_1aBf!uQ#*U-RWa>+Q z5V1>B_fX);R*9wO;Do9qpuw4(o6kTWi8kc_^hc8!A3o$vbh8%Y@=S}HxU>*G3}sTA zzY{%hxIO7uO~vi`J4Jd44>3Z0V#RG-ySoq#2xs8HataeZW5d|90oaX5A*%D^^{MCY z#Pu{YH(fQG0n}<)YaKvwxn+|8R;S83!}BT@%(kutGuHy#{kmG*BD=zi+y2|K5;|vIGjw>_lD(ftf^UO36^gISm~p z3LxJixQ#gxD`}=eAh<>5Z*Lo@kZlcMPMiyJQJa?!=dXZJGLmtjZv1&da{h-`Cbi49 ztjdvnM0#X`kY;8pfA%L5o{AVyNE;@ZJhU3yGL5rX?@fgL@W^ejiZj^|CsA30Bw$b4ke9t3DY23~h=?!sc+72?9ss3eGc%3NO zC~mO5;U3YUB4v4p!K3i>PSC+E2u>tpWtXYjD(MKyZt^P%T>QDWMLfy0f{Vf83E4|v z@FZt1A$+^9j^GQau1spX@x|iRFPA@1JPeI$p7R?CSD=|@L!G~c&MWxAS{*&-H{jn~ z>l9#PtG~L9tMf)n&v_kY5j^MBn$<;D8Bb838)Cpm*t{71s~6+%^6Ldy9A)o!MdO$+ ztr$khuB=NJ-4n~+AtzT{1~#{F%Z%?8=5obT_-h1(fHz$=jKfQmT$FXGFdyqA()>hl zHF#3r6MEs+uPc+<`iml%MW(E}${4%52i1$Xi7nvH8bS5}fvpx|L)h9_w7@TtO%?lq zfDoIphyTe+?CL_;hZn&JTE7nE9E7l!a@nGrnex)rf?K4N?C`6pbT)OyU0Ep=Qf}T& zQ{OA*(#I>gEOfq<8bhM6L<>e!O`=R{3pboFl#K9} z&%l-V27A#w?}drG?gKFl2>N{VD?Dc-cSOHpEfZ{^i(dw8UWaxj{@P7R|J3;M^zr4{ zL(|ci9!k355A_jYp6JyZttjWTBlZ;O5-d*X&lYE3#=EeTq?a@Ggd28#*hxi;MC;)7Q}VeyYUO+G2kCm2?Oiv z$qsV`BwNEd+Mfp@^&7E${9&{Y@wV!mBdlz10K9bOu7^1{5HSQO)$~EbVXG3dVKbX0 z0SSc9hM6V!#D{f#t$D<<(9@T2pc=6)%-r=b;y!U^P7KCwI_9oa(F^#+gEG$#CvEG; z5yC`V{#U}V?jG5&04y~UyZfcXG#HA9DvdG3B12jXeF={zF`CI;1OkSd8D@ON<*KAO z+%zt@_SCDcE>N!mdXBL-)K25)!P&RgqF)8WTvG2jVFs9PV#tyQUGSabw z&<{3v1uq@@GQ1D+u`dIdPslC|?st$8u6%4QVJuT;auh1l*uhLcJMu)Eii=itnt+6>j)o;tC%>zdhUlO=7fr7-9-L--Ez+ zhMuWE*`d2*(1~O3){GUkvjAs+&QEi*e?6*b>v4W5i)RP$x#)DnrCE)C&9KG{PKaRr zX3}bZEn6+Xu4Xl96YJz*(pMh3fF46h({=T5SQo3dALAQ3Ag!)-@yyFS&Gzf-SxK0bqZ!1f=+Gr{0EKC6q$k zSI}K1wJFGvn7SXBI3!9;y&HbKC;ZzKEHd?845{2&;eL*g7vjXBsmUkCWTv=q499>D z0fJBN?!6T%iYJzZ4YIJ|+&On=rVmaq^`{7#ROU?mX_4arhNIA+P_%Awt7BOJ) zgtcs0{%BpK%UBuh3oyRcfDQY6u|6qy&9R2XV!cVcVZry(Zlwa9j(snm2iCB8rBo=U zoKh}z`Z-vKihZEs4dSCR2-0rrz{?t1qTJI5DNNhI-M0;#iQ9VMN6?XXDY!_DHc77W^roKtxyiGVl7q-oD#xV4Z!sb)~!B-OJq~v zSX+E|YkV!dLlK9P*D4aZOLMy|SKSIdME=M;6YVB zHTT5_C|RF%>3Fy>v>l61MJ_kQziy@E`KC0u;Lwvt9X|*AQ=AD9I^q-l50psBI^Qi< zbH1B_A)Wg=&I)G4v%kQwQQwiSj%wfns#D?-j3hdzWEikw+I~^EyOi|8IqLfIEq+Vc zmv8YODA~|JBnUEhIfXX~F5|ywrV_P^a12fb2HFTJ6fD#sS1A60lKzT|eHL4&?DFg{ z0DQU}7+Bz_#&i)O5vDwl?}RLQsX?7EjR1us+0yOk75 zT#$Gt^4=K~y(_L0h-$nK|A0_QPtoeJ5qg3CQLDFl>{`}iDe1=x!|zD!cErWz;veA` zLe-CpHF&PQ_z?W~Bx+3XuTPZ;Dog9`ylmm{((+};;ExYSdQt}^>zz_5pG%`UdhOj6 z4_>t43xdVZz;_{}v-3Oo$8>}AieZ&oj4LQ>m|GJfu=b7qAi%fH!@G|U8SR?j9Nnb=SMNAoD8N3Zl zuMQFz+sd(qIxvifwDHAH8=c;Z>Q7Im@q&JI?aNV167=AblZAdti+>J39*s_5dmyzJ zoUA)>4&`?=C^`_4j=7@HfCiQc)`(xGg2K9AMrxGlVDPEz2!bZ2ZCQ1s9w)LTA#Yo* z0&~&14zL9HYLlTB&Riz7rEP*)%%!Y||CR}^o{zxh%_wePs}#pM3oQ0%OC02)I0pe+ zD>Z_R_#3hbBl`uB` z&NYtT-aM`=KUi`F%uewn2O$zBPlRPqw)Pr_jcx5U4jbFrYaBMVwbwXo>}xb9`WiJg z;EA&OVDb}vE#RCz^_5XWi?4ui-4@@su(4OE_d9fze!oN4XvSWn8LRbb?L=SePMn%6 z&BEnC<~Y)aUx=Yn_jCk@%{E>6jSXWFq1bA}-%tZN3oq4%|04oYyrA6t33tU4e}=yS zI^b%|%wpHcGfSWHbTEc4JrA~3{*r^Ev!d`@BW`Aui8UV0`zI4 z6_RdpYcA_%@H()IXPJWDN6C(fQXz1@A9eiLs}xEGSOQL_kTb58myq1D{LTbxTFi!# zChaA^#t@knSgcLNE3QIsc-B+~VtD?mXqZUbjjAZO2~1ng{C$fv z>r`+Cv(;)4wQ2>flNV`g?o@TSx8D9b4raBQwXW5uFBxlke{aO##3mm)))~|aQhfy! z{DiMG)%5=A?H}a~X$vki5OH6ATVs z1cIe$$L!xD3#}=Nq5cvbyU1Im%=pNy&^(w0P5=mTfQks%M5>a9y>nhMi-it@^&!A%2j5P(KR{uD1-aOVs`SP60qS#JanY?*^R!KPP0VjSlA&Z% z)}^z>({T7T41$K4hLkVn@r*>jooOSk=hWUCS?J{_NBnpZ$scm?_ z=mQCtk3`!h412K>WpdH>VVFc(qemC^vc|nN?rq2-xCXX{fUO~beAdf3>zWOp-1NCJsf|A?{NyH9{tD9n z>TIBrSFAuL{E-jfH*sRQ^;9OcqbXxS5B6HWrmBDNnW{g7V5mXcimFh#P#Y?$#C zw|xwdyTuG@QUlI+_+ke;+IZmaujNs94@-h+PipeCgKaLhRm1rAw!OXe@?Ojm!U1+#&Iy1|k*9D+<43_Arqz8%ap z&|di3NbRP`dCO`XUc&jp;W6UU@g{b79KJRpC%BCo84zE*jg)PG9CoLlB;*8qG6^|5 zu8b&06gHYCRfy9aoJF<$Kob!rEN&`#nYz%-%x&COG9B!=1e6)h+f5fwU|*mpb$$>; zmX7`Jg5d4QJ0dzTUHsCVmbb&=jD6|+4)Mi}5A+_~7R2LsW*kqgn+LJ@n0(VKQy|RvNYu9h%REnYX zZwO3zVPGt&L?j$@pbDzK0)pb|H?m#U$3H~GV+==K?eQ!n+vG>E=$#Ql7$LF{5utya z$05MDdggZgQ0jGg=603WrTbbufX|48Q@0qLMPd`A+n`|9719IJaVIv62gXFisnCup zT5wI&WD$4#ncn_2)O0mG#mMbp-9T&H4b+`t>00V*0gM)X7-AjbCT(k+{d^eS)&_&%cO&J0w*wmvoFA~=fE^%{#~*M@Zr?!3#xzd2?7?Hc zI)^;?sm>nQh#*cmttgVkC z`eW=@XJp|pp)21LZe#(}EOw;c*6l;lwoJ*9MG9`;pe9G$`R&Xl00=XkIhoMe%v|L$ zCJ^>8Hkm+lM2(9#Pt-VUb%|Pi6gI8irq$cDdYe`+QBFS z_XOXN#t)^Qkl-`b+v~CTJ}^;x;Y`B?t6N@?Xv4iMChxEtmVk|4Ci+eStU*u2*K(zI z2$f!@{7JRLJ1#4eaNjYdcQ1Rl-t4eDu0~+h!}c!AcB6C6#5t0&I`{~#q*DiNJ+<)8 zz;(oo;P1(fry=#H;g&v*!@?53BGvP$|6Mxum+-HgU|O1b&E+k2bqNmZK1zBgN`>)K zj*@j@>p~R+6;AYyq(-K7e&c~7i*v^p7N=)sZ^t8%GRZseBW7sDIK~|wB^xJ?EG|yZ zFCRZTy|^@cc>eg2MSM4;nCuK}LNS@h-oiaa1Z0z)ZL)LCGL3F@y}~8J=LdJhTAz+B zL1`1#!||X~%wX@+oyb5=vR_lDgO85~e=y-H4;ZUlos{$ygub3~mhvII)+)VgW4MFc za?p`7Uv=+1#snSv@(>pViBUoZ#pk1A5b)ECA#ByonhkZW z>e^tgDmP$pI5lF)K3XBil=`Z`P z3oeMoQaX6+13VVqb(nb}wjnqn&lfo+FzXj@Fc&eDjM4y@01}*<%NqglF9r|DGrJ>H zh#!qnveEZEI-8j;SDpNVeCueed>ImKA5xqfbUgH zkZ;MgsImKi(h{m2z4#po8j`3|2}Wp0a*?<;(?FW&%&_gq()8l-L*w(~2c{2A&o8GA zEFM0xkcwI{y!dxp)K;*qeM64FXhwpr)C8p4<&fUCIJ-Q}5CjwUd<}6GDqq|^F#sQa z1AhE7{P-sP_!j*5HvISw{P-^X_!s!`ukho0@ZOur zj8z2#&Cz&U$(kcuJb7E6jd0rTZP^AAh*}Lv*|t~_@rBn-sQiVuM@PVMUBvkI*f6e$ zXOt>|6)z=L8^)CtrS9NQ=|bWKttIaC61ge}QKOrKyF3or}d^!zLzA49}WIdD#2}}27{agl!B*9H}=OYQ)7k8&X2J`m6L_A2t zZQK76);ketNrHZ`{mU@+pEP6ti4(M#wgJPyd9$5mY0B3Hug&(yWb5we6kTh<{eYr* zzsHriYcRrh4GxzpbALw3#)6m0oj5lIY28lgg(0PqtfJpO7X=_4>Y+3V5>7H*8q&q zEE;jTTiccjRBZ95Zh^lze5S}rs1XO$lw9C1zPM?Eg2Cbm)NWRtk-^6c{IwCjge{mA zAbfJ+ORoJEhp&yqm0Tck6&Ft~K!}SA#r)d1b3?QXi?@+%6L=!e`)P;<#+Aa=fzROD zv%I8c;A`XIF|ySz4q9*Xr7PL6rmGpVVO;w)mFLMtCwD-G`3{yI2a3Jv%sUQ)?!V)x zS}l*yYI|A*bJwCjW9NKT7QQQ35}7=POJI4-$*{+ zi2yP^`!6Cl{=jNm@FetY852M9R@yzTz-R)*G^EZ5^GjD&)2+uqDD-qL~clMag z%vxkNLmNA{CCzLDr6SeYM6)&DVpqd*pgqEQ^f`d5cITghqj39|ag{zwE)N}r^&LQ< zjMk)AJnj0_^(naydVhFDw@6bbpg~9~<4`BfK3CTsR(Tjjwgax{Z7e$5n4<;!eH(Zd zG2?1m5B#eabE=MAp5U1j!`?yyU9dC+B>#eY`4S&Z9eXC!Z~Tv@nSGF-pvli_b>`u3 zF!1Z2{lzicY(e2A=d^nW+B>&~-B3J6cuGbrq~tbV510+(Netq?Rbt(&9`La}l=KHh zG=t|OF_&{gWF_2nnXu78-ArM$DR|+V9W@KE(ojUVm4<6x8p5qgE?10PboA>H-!Z;$ zEPpJCKesURF`U^Ja`9Ozvu!{plB99`og0CIkRd;b$%j^^ev&c(k3B0+dQ|=hA>zSh(NhWsc`-YrM(q`}%!_|QNgq_HopL;;7Qv8S7MYU|Ay-h+bHd42 zTs|N{Lk0*t_YqK!1s(a~A7Qu-!H?-M#~z07vWKgDXQKb4#hn>fgV?rN58QV4@_+*u zCvtPNg9zFFpnkcrcnU!r7f;NQjX}1;7^@y7JF@L8KFhHp(Dn95!8-i7^0;^16eDC| z?5>+2?_p9tR$@Ql7gc$+V~zJS;l?S9wGhAvERhDJPPt=0q-2C$H|i{TRX@$1lgDt$ zd~khTVjAlJW_qx9_VT&m&KzUBw_!d6Q98_O?9n*_lgB5R_Mzk&e<;}(tJk(;!O7-| z+0fTiUwVR)^?oUBl$$0p092y%g(zP7oCLn^4XHV7vN_fRC%c zALEAcQ%fj_f!o~8Drd$R?QRyllrmcT7{ERTu#W-kV*rW1Vat9eaAcE*efBYc;bQ>Q z37%V@kG~ZwMNGMQm%4SH3$XW0Dn`8Yp#)V%VM7J77c$4+$_**Gu@jfmO%!9;Auq-- zH9a@IJdGCkOFvnky)G`M(o8U9^P6Zl*qDfQq_Rg&BH^G7U{Y**%{fxX?h_rUl&oLM z6|;GlRpp21JtaGM&^~?A@oB06k=;}Uzo?4M3wF)%js%v&ttaq0&b$JJ47Z*d4$8Dr z?93|wIwrGX2EcLf@Xov@wo=?#XS5Q|0R+^^EUHFtEUeY}R`_1$J~Zgw4vYUf{0`-4 zw{AhkHuDo~Z-BAP!wfqOHWE2XFo?uvVGRg4cAwlmzbRqQZ`17g zZAN<*ZR!wXI4R&sF2BOBl?lUH(83}{Lb}vD>#P%zXq|NzM0ovpXT2!dK7H0rSE;*H z&ey4`5M-ldtm68ob7?oVf&sWxr3{g`q?e?}Z!?x99h7uc$}B>rW_O!ckQp>GZD7=! z;c@F`A%12g5Rh*iQ;VKEM3y89H&q~Hivp1es8DF~A$NK3mIerH)VXx&SaiDZlmPJRD5UB|^p0dW{DaUUYSu|u!KsR!pHu0=^ zyfA%~JY%{@bMzcOL|=4Eo=WOOk#llp! zdSav+gx4)jX1c6Qs{}-7vr0gn!p!lp=3IWqgHBVb>WMp{YNAr+w@D^nghCJ zsmbugHclY-lXvc?gq%G~$>ybUo;j;MUwBeuOyl5mZ)KZ+`A;Cjy1d*lngK3I=2vB$V!{GG=f`Vbw1@= z`Ws4mD=u9MLN3O80r?#C7}OvPX3y5o9_|gIx@1aN(hOkC$2pQ z$X!9s6L1b)7Kg~CkCZZ^-{15G-t{-go^kvINMXpi=3ro zFwBLhl=EVEd_4+X_UeX<36U&7i*I{tGS~`x2AtHK48QqDKmYm9e~xCtU7vt+`eMtd zz=2PjjXJynqIe{#%fe~6fgOm$pModqJg>zQeY$N_NHke}4*66+bpDE4gfyAD8`!2e z{HaLY&DRZ8h@z+ZMsIEL8aJG%XnDnY;Tqo?+kZ}sRI~a)tgQtXfDL$N)g@wfWJ4jb zI2{_jZ20$xIK)-IlpvCgre1RqROcv5qY^z%0pUZ7*3W{s?;)OGDbGI=(2V}U_UTRW znJ;Ch*o>QlHN|L<-|?BZd|pa5I&%kHq3vV2ae&&#L(f&7)`R8%27*aG?>dtvi#uWpN z;0^l53-O55jSd53=L8IH=TDi29TQPoI$~$Ry;nbv;uNI298y**r%cSP2(XHIB zd_K8ytEij?%RoqIjO(R|9d}o5g%R7M(>FElg25c+!Z_$wxm9qq*NqocKGG^yIy4F0RXo-+_|Js>REsw&`;9(wi>Vk6l`)9=o(o zGnSHpid)RM{=8FQNe1$*|6Dsqf3C9RrmMc2QG=1j`q|PZ%`4v#_0kY!I29NQ{Ya4g z_`94S0eyyk@Njk*VZ#&+*l3$4K;#6*yxzte>KzfPmhi~SP>ir3QRnTN%kg)>`1rdR zQ+sWN^}bVaaqL!j0szr1Zm-xXUa^MDYa@ZN>%*HkiMWcpwpw9TCN~rBWFI9P$E(zX zdTCIgG01?IG?ZY4@5Sgvnbgwd1ocOu)dhQkUSzN2lC&2kDf8S(C288Ha+a!f8(iFt@8LGw57Guk(zJk0>{}tY7 zI0@vL@d3vl&t!bJQi1aK!YdmIpW&~51g4n&!vsFV&8!YeHdao0XU11neD`$D zp>Af`^$Q4#)ObjLs!VGAmqZ5^E{lIqJviSoiH0xVSgw|R<=3L+L(*0Xt0TBoXfG83eno3jnk%CbU2e?M5ob-}Qz#BLy;I)%x`~L;} zSL)wL|B#YlhjAFTux6V7#?O>*IYs#IWN%l`2OmS?e4OsW6G2!S$q4FP^$e>w(K8IV zU`#tkMj3Eq^gN~+` z@9|F2f^ImHpkn7hMDA%<2mB6LT}ng%d`LudIExyG8Md{0!U%Chqf5Z1NjUYbSZZ?@ zA!H*Z1HPNhc}2auD|4k9g_lQjOnMoO%Pg~7JI6Z5cbx<%P*s(m#O0LDAb}yyPFm{k zmU+Gw`jLuDY2GckMVhdOz1n%!rE~OL!VFLjS%U?bVb!oOsa?AtqxcEn-)u0&s=+_6 zU3^_B?nzET@ zi{r9Y5*9e41$^+NSFO17)xwJFYedY;wUdlGCC8`8;gTl$Wz9q_s*U-aTcjzclw(Qd zxQhloL_7Bu^!04Pky7IU^_XqklojQM$_Ql=36zuuFIp&^L4oPQvY7O6q^QI|4`@RH z7A5Q8F@D|P)c`J3gIWSk9Nb>uphNsPR}tgTY2JeX-l0Q$Y_u_W=*~|%SSVu$6b!T84v0Yow zxG34k``QHV4i`N)fp=S^C?wv{v!HP41>P@k{d@>K%N=Z#I1Sv)f?CR_f2fu6!zksM zBST8q;JFc4w&1*p0g+)2DfJ|rWydBly}TJ#cP}1(6W9&_3$h=}@-)vJ64?&U4?Hn) zgvF4c(S?m-Jb*t znstWtOKG^Dve&nwc7W>pHk?_S`2b4IV+oO7p6<{=$q+6dWaQwyJY3$euxa~P_s2LB z;7pna6dfP|;J>lP`9)N$n7t#b7g4z3^De4*11Gr%Jv$yA*3Ixx?{sEv-X~^otXqnWy zner+f+kIV`)TZBzgc0*6oEX(g?nLhmu01VJW7c>x8OWcLK@`9#B_p;PPaqZPE?Ifk zId&L8%@={3elsd}8kdnZ3q&$z*sxxiI*GRS%!1w6dV*yGZ`}~&0moR6`?$z@f~#C6 zwYeeggO(Q|6R$l;<%A}P?&FjUWnGG*54yugZ089VLuFDsF^bDe`I{{RVaq_MEJfQs z3MH*ZsXz?b_EFZB#{aA>{WuDm(4LVZL}yF8KY+*zF9R`z@-t{bQYN)u98p=#g4uH7 zAB-&^$cva^*A<8y3*7bTw;hMkfm-Y#ZZT2#s-maYV=f5HAZ}?p4o!I`LI4V@WJlgpwza z5F+$oDzY3C=~c&Jfw+tfvmC-_A$wcUEH0T%bi%dgjjH1ieUuDM7o1$!3bjmXSDiM{ zWV5G@6|5mjHdNwO!eTm;nDnxhl0AMkmCmNlxGO8ALaN|ps(H7Py1SUkrE*1hjFNJS zMUP^=vDD4QOb+T_oXLd+tz=3*E{H)Z)7ViK9-IVabz(dv3lCauW^pyC(s(ljvUh$w zQm8@=t4wOyGn8~TJP2(dO=Bp36`H_)TD4Ml+AFc$DA@>$LltMY$Q$a` zpKSbe%-4UPbbT$hdsog;H^g&?_)I^%a+Gw#cM>ox`U7+|9>Q5+%LR!iAAxPFmc=ly z1uC)Pp0$MP4$fLa7lI{p)#)eI5&}8DDR`7J?)%QUDHjWRG`w+*^ULiIAQO=(F~|$B z?1wb<0hSzF@iOPyx}Lh0D6BW)g7ygAK;5G2$Hiuodpp^qW%i?}sfKHXTwjsfGhFxO zHnD#(L@G5zPYzQuGavOi=D%T z%6K7gTs@RdaTVzOSN(Fso{Wb5N^8S@RW?jl^Na!cy4HsM&(?!ODl!+2A`{95U^Z8senLzS*`-E{d<%ODF16;jd<0r2el!{z$US6{0Q;7QL|cY` zDt22OL0-;Mkfn^6L1EUpP!zmdDS3hCXH%7upDSih_)ft+iOqH z=aSs9!~?Ccuf?yxW;^$FF#YTdC8HIWqJR_AnT?eIM4d{lVcxp-CM=8IHz~SLz5y#$ z6f?M~=x9Z4NU739yOF5^Oi5dEDFs!jO-hN;Cm|l*ycj?Ec1i}bE@ z@q9Sd9wb+$yDIU(on)%7K>l{%$y0p=s){Cj1*@_$^FTEVD;5Tq@g(zQ$q)VQl=MNO zVCemeIY9$Blw*gpECe!Y_9duzS?VdiT0CJ zgUz{6V97b{E_!FU`YW1iI$qq+;vrP8Setc_6|9A;P7vha1fP3b(}IA#cDnleYI?`b zK_!~H&6x@s2Km+B2LTiHRsfAPm;gu)W2d>7$o&nS_w#&Lc^6#~6oZFVxtFvRQ?0C? zW9&sh1EOC?B&<(~?wss1Ec*=0KEn#G!A~Pb7&249jeUkCVnd_j#MOO~$?3S1O(^Zw9dOb6SPj#2(`S#w|E5%w2ZsqX_wGW z%d~4)yK0AM6$h}O-)5bmQzFH9w=i=u%yFyE*g^S-R+|K6ExAa1d~t!?EN8TwQF@U~ zMTM>)$moxRcr5g%?EEqGjR5nEKrN8YAK}t{lsr>t@_Sp3o*d6+eK(7b7bm@ZwNR|g z7D~|ix91TP9{R5dJX8pRK=9>J1VbA3*#4;UmEzsslY7ngyo&SRt(f+-73b%87Vh8O z-+Ox6s=^lbez#0&S9~C%BH<$)cd<5{wc)G{XKgrZ!!`CXiw8?Yt=v>FTN}>MhEogY zJ+CU0+8$Ow3_J=?7e}%nf!P+`6$xk4EhJ=6gWa)*)kRZTiQpto@FR0yI2i|{ujdia z7hm*Qgtm{8O^Z$@=S@^8^@??Yi?*f9oO+|Vrbx-CkMPi9Vz$hw-z<~bG1k>5=8HOY zk6dl+d?!~M6KepSx`&dnic1-S>H%sdwc*$g(TtDZfjGZOsF!={9@y2WF1BA29;@)}-J%~3QxG_`{n-2WpQ5YE7Xm0B!p*z2QV z;t8pE0p`{-k5Qb|gjLzhtI@uf%`9&?s&QelVJ-CZG~BA~=^0T`NCqtL4(Y`f;}Wly zvD&xhI!1L&3SK0U2O{ybwU7+XDCK%_7pnE&u1+IrhG*L?{2V=Z&?#o}u20FPl~SRYI>~-bRorwH zKE~mA)o_~)GN4Rq`5O~7x2^aLVizF<6tflPNS10)D-d-X`EayKfFx9_aH*Rp8Lk5O z>9kiZ(xBvpbguk?LechHkQJ?2$6Lxi{*({S@MhDCBN8C|Q4x{HAi9CRuRzE^U6dM=z%YTJdROvx6-ummQ+!#L0kYvg?~up8K+X~D=5 zd6hj3OXJ0>QnLOug!gAW|Byq|C&Ma6{P@}5R)*zS6D$$o2#_uvhd ziu0%6Yw9{43I^%m?eN0^odOby23egH_+&ryIKAdq!cX=y-+mt@V~cKu&Uk*IE}}I0 zAbt~(Rd1CxD02FazJ+09r4TOR8c0HeY)8W9nV zKnadp^nN##UlfOfGczHkgsWfrgGl}u>xj&WrveZHm-DwXB~*PgY;KaxO|rR3HaAJ4 zD{-q;R4O%6Hm-1rd{D)uZ2Sw&7ZFt#Zv1QXLG&cD93D_@Zh#zUo<)5F>udt5jgU4S zv;~CjdnZ+@jX=SLw-~D}J(P?(JU=_?kK6{|S3%!5WJ7F!30}p~*w>AB*hR?(VTVBm zI$)9SQPf9}Hcgz1I0t;YnXZ&GzYYWTLps$Ke34XmH~c}`m9p?oO13qC4%)6m8_Vj8 z=l>y?lZ8>ha}aC~_KeOt)ahXMEyCj z51g$1F=BBEP{-e?RmW}f5z#!bc^y`+!KIlw`J_5T3->~=1Bm`joC`SoQ;5a?KP?v= znJ&^C4Zud$ClLov5bJ}mXIr~4H^@6p7iKubjd^Fq&EpXo2)d&1@Jub}U{kwpiqV50 zE_Z%%6iydq~pA zWf+exliCaZz`&j<9!Svkc>>W0B?D=EWV(E=6i+E>I35!!pk08-ukI zKsGI+B);+BgeGvW;;r!LA6qiSHQ5fPeyfL#^x?i@3b3w&Fk9`b(J&FEI_5C^4Zx!= zKf8Dvy@z(_6jAh=oV=z>*q2lMiZ4(1xYYPfjA^R zMc}LtLhNA)7v~nDfbc;`u?m6{G0Y7@e$n75&Dc{3W8;}-B7T9R^s*ZI;gboTG=n*C zSHSEPNp{c!d`mM=7?h_qP(nxCpn#TihcDBNeHpBK0>2;~%e-rH%+?adzDlz$Jnz!2 z`x?#I*CdR6t!C_N0q6V$g-9qs4MQv?Qo7$E0$=D-;%bQTC;8ZC>R}$bN)7YSRS9FS z(Tu%DGgefVxYJ?y3&5d%#&lSqiNuHWcn4eHX>fI0;At>yb$A-gJk-b+kxLx35va;4q76az;HmwYS)l>!4Rrg-Dn{R~CYvB78S z3F&Bj!9&T$*naEHTcI0V*L}dV0FFBVQ2Z4Q6Eth^*G@{hX6KiqkGm-8o;y5$Ao@c$ zCB0LJk4(%>*E>Bq7JH%vg_A9F7;XWhGjN#oG!{0dv3BQK3!ZE%(8W4Vje^7<>;v53V1^wC* z7;&QZhx9a?`NL>4BBxX`0-ym(6VU@-jSAIBD32 zVXc|?u&%E)k68A!KJGvZ{_)ybJ*N-EF zi92RbzSYCJS>Me#nK7_5!}?{b=`a*mIE^v1cB)*89O44?=TovlQ0!6#FXQGxAq>bn zMuy&{T6vS$vmP~-gS;B7a4~d@)Vq|Dz8vd#DkXE~kCfgHTvAXE#U(Xa#SBtj6i6f$ z6?5RiL}#%vfZiPK!+7SzLM1r!wDkG8PPzeh*Hv7K4P~1LE3pkL0}E9`q$kr2dnsh{ zO{8mHfGn(zoI$$V_d#p;eGuyG?_#MqcsVp2%*uCrIciZPQH)13$^mAv=IRf57YTW4 zeUxll$`wj^c=}&B>g017tWv$`R;qc(w(gh&B*-3;32e3WyafM`h+4wG8;H3wsa^UO zZjz6nNzRs(>MJGaW`F7LL~>YwM5iL*u!|Twh$(G}!?v+_FAOu4&CCWWJs-hT>;rVR z;%UHov>9Uo&75c|MT=WudI+GNpS;$!Mq#vkvySGhQbEYtFL+Q_x2=zoEl^@+%FVmf zWhGsMDyn5t8-t2DiA?iXI3o->7;=FGUm$0iBX8wQQyv2lc@Zy`!t~7c*Jppk8}#0)mG{-Wwn(H zL0cJgM0QdpwW}WI)*Sr$eY{3}lgXI6q!w+%mi(U`dE)6J>MyJ z8}pqmFnlt&D9*`)x^d=nF|)tr8q38$p`b|a0iEBCQ z(XYQAA>-U$yy3(Q88&m% zEsxl+)o6LdX0|PlqO%T3#QL^1(#_;4%Gyggs0*Em{tG0Ygm_mV;UVD?ih6Z)aK0Uq z9B`$A;O{z5?Siw_E>v0A^JFchCkNw$$KOmwmE%EJ$vo4dwybL*S1QL<&q zq3&|7;7*?{c|KOM$J(A{Qd@-bNJ(il{%!z#JT`K3}9oQ)u@Js2` z3N~g}u^dr{!7L?x-wgks6W9{><8@H7#f&?fwyGnY6Z2~J!8Td+KPa}EltI6PS&Y-qg^0*MZO_`w7IrZbzyLLZ6{VXR~) zn^DOjI~JX^G3N;T;gJi@B@D0Y#GZ{gqgt&|IS@lO<{Tt?#MLBYUSd;tMO0n5DZKtS z#h7!M)ZCvzmxB$cQoye)DFpgUPdF8KJd^R=N+l}tTqd>5&jt0PgAkq$5;DLtsa0~# zs1_p*TSl%?h|_}Vla@9htlTZ?2*F{49VA#z@&^dQ{PF8$EKt`@F@*+fSZ~J~_IAW{ zX5sKVp@)0xP6YJPW`168->jcJ>G-rhZ8!BPft>)V8}un)C+{+6CnhPhJ6WAHG0X$2 zyj#vfQh&m24SAbC0dE!P6eA>mn1(hI;ueOXjjg*8eJZ6C!WLJ*5%!v5NyOY-if_T@ z*4o@!QDst*6o%!jor5k2As5@`)-r6wH7Ws7x&-C;Fk?!zc8-Xu3)jv`eF{{MD=$HD z*hk6W^l7(9m%OTGOYxFO=wu;1AqkDZ==C zN=7Tx@hODFq+R;N2sY4P%b?&EVTN9Y=`bBb@JhpnJ|#nUUN$wpJiR=7X!^2ae4MfC znL^iR^@fMtVn(@L(L{VwwhP)EJ*3^h5Y5qicv`DUIY*&2hx82?eZHt%ha`o-0I}PC zeWKskO0hUYyD*ay>GMPbx=d>MGw=gzNQ1X7U&RXqpWOAg@PifgfPeiB`-GBR%g)NA zSENp^==$(r-wkVm2ZlKGVyafCS4dH3#YFPG!C3MEgC1dtT54Hk%%(@+MZn01Bc2h^ z2ue-lg7=6lMx-FsBa^KSxCwBQutP<@Mgvz9g@e@8rf;R>qKb3c9Z%ETX?NLKIp{i> zTrnHpB>t|o!4jVn!dhFhE}e5KRJmNZ1&-7=itl3*b5H0!AdXlGmuAAK2H@k&EblI+ z9_ivoaZ5rx5-mQhOIMUg?6rsHSp~zhSuJbvY8sm;{~lclkw)XSqg$GK&DGDNZxrPQ zCELOTwuM~!lMcmUo`;Op zdrB^Wlw`2EcJ14@YcBYAYT}OLlZWSy9Gd4dCA4d6W~Sy$6=1VH&|6Vqe0&!S946yA zCI#~Eg=$#6T#FVz`VP#^m>3@`azDIziP<^5|JN8#0Lzcro*sdJ|7Ub#gIkGDL3_U= zO6d^d=&Okic0@{_v`%_}MX97keDn=R>x2sf>1*;5S%L<)g+>0N6(5F`6>Rd3=ry$k zBO2&a$RG)F-Zbd~%JG12%mS5C$`4nl=_)Q1`*3*0wUo;i>&hS>eJ<1vq-3{WO{KG`Gw#YtsgQE>ZkqaDF_%7G$z_Yj zPd~TW*kJXM1blH@xrdVV882NexJA0)d#7_5msQZ=Hk-I_GnwCoX29CO}O@8o-LJX3Et$n8J43OP8BhF!Oqh? z(tx=Jvn~yB5{)+&6b28MnF5bL7k0|~+E@RKlEIK5rkr>W#MWtndFE7(@WF83Q;ydr zG7ud;ax!?Fl1*8c&SoILc-||*{d6-^UOGa)xLw_qKXQy+c^s%*3?1!<{UfD}L)~!0 z(OPXh=!Hv|KSR~2b9l))?H(?%gEh%(&pV&Ww)!KIfeG-o5qezI$&~S7=Dz{^NZ*_1@jiJ@?$RAI@5b zMkfXnq7WxoJI=bBx(||42xj?lAL&1Eo*O$FRhAx0mDpqKVy+jfG$t$tfRjy>N zawS`wDpCRryg^*$O5j{&c0q#Bqa-xrC(08QH493|xJrzd-(dm>Ax2ssakWQ>+}u`{ zSa{Z|@orFS=g$^*2&-1Mf7^OiPmD1cIYCLn}$3bnl;>^?POWNTKlPq)DyW2`XGK@rZ2$% zT&Lx9oEMv{EK<|F09g^n@NfZU3pl_GwwdTV>1cIw?~47YOm-~iSNPK%^6voNC{sm% z{JadS)d97MI=f1^caQ?0;u7hivdEiCceR)fk-{~-{F49^Nj;Ggp--IIft4#TPJJlhH?^O zssTPRB8q=|7g)LbGeS;L=OL6PeCU&$Z3cG0oAq*2V>#d+ho(v+so7aMTpGG6*h`}3(*%rXDrITWQ4Frx)Cr!ZVIw`~)=^FJH7f*+}C<~UX z4-pKArkQxvz@=Iup)|OyZlLKwtD8>hxq-_vqfggya2ts$!FF&1)gw*;H z($x;<|A$KS(Wn-%S@%TP%yuh$myG{{X&rjMtbsWdwWOzFkII=I`rpvz3*nHqRG={o zl?C^Q^P`*cIm+;%fO51LzIhznzhX4pCJkQu8SK_`Ms{Z~I=Jm&GIN{t_DlfN(T!-& z&nVHN!JoaXWORPEz%g(mfK6srGCH^|owOL-fbDj20L@QuOAVZ#VF`Au?$Mo}nO%s^ zuYt&AX2s`ma5JlmgC8v}EjoAu(bmAo0oqdiIUPqfkMpxQ_O;Ki;b^M`4rotn7m}!1 z%|a426HKh_eQuUhy1-MQ>!Oecw(YrV3>faNOXIogXwSCW(=~>D#;Jzj$|9bBUIzct zJPd9P(=XY<^zUllt?#4Mrg5;P-Kt$`L-Y|fG;KH8LWJ@+nF@jm)R!eq9Q+qGLxTbo zb*Gzp7RiZhcd+wmD>!!xlaX!D-7R)KQ!S=itis(}Og%fRu#9yC4d*($fL&*iqNqs@ zD7TJWO9h5i@`8n25?f}#Y}OAK8$=0i$>8{qJZx7cRq_kL>@H@eD(g42f#KL>hd%rT zgPm2_p~0w{rT`nIJva^ZB9_KDys7KaaJH#GKQoihNei*d^LXUbDzNh5uPDsaSjR?~ zjyq6G*b%?whapZsO}hnj)%J=rcq;)PlYSg#nWh^|iElW#HyU1XM`7?+goE4ORdjPt zQDJoDvfPd0Zj^GYYdm3x;Jzf5kNqxkP-UF7jpI8?enxGJ$j?ZoNx{;>Gv>$vP&5cyXVXCatW*%J;n zw3fmbBE#+KB}9f1CG^=@YspJXCcq#Jtdg%~HT6V5QuhSKI9Bi3HjzvWjqcud+P1;b z$&qcBV=|)EASd_=mxyD=t056pooQ}Y->1FEj4qit_Ug}uH(ziSipeT(0hboG(%0NF z+wHeiaP~zM4V+zC*ebZWw6IEiaUz{e!JLwC31b)<%kU0bpduZmg}u-S91lJxj%8g;A;|}$Ej9-y#%^?7#@FJVC4N?{!K8yr*3{Cy{8CdO21*p5Fn@`BNW5>T}V zB$L@vXT-&!rZqza5HW=5xVv12l)KB1iMu@iL0>&vVC7RuToR1#QN16Ii@6`XE4}m_ z2Tq~tHf`Ju!PyFb9G`rKtUy>qA#oFUk@kHwrAV!!5SF> zC@2u@BXT@Hqa?jmjHB2AN6!7?-x6El)Z0-EJ~j(@zWS$fR6m&6zg?l;PJastSsQ1o zFw`FtGe3KU5)qHB~c}KtcYu;2|Yq7$%UONcJU%`e7LSsfn}pzTLYMgS-2Z zLt}msv>;KC;Nd~T{Tj+0CN$guqT@Swd>|yl@~aQPt7z3v`2(oq8P`@THW@QX?e}SPft7pSFUY>JqGb=S1*A_R-F|_seY>uI&p64ZuwOb#TY!|6HkMpw# zc{4}4M&~DS^;*`?5GD$@z3t%7-Y`}Ij+kEqfnyF6jSeoG!E{Wy#m*Q$0n9eX&_?Ii zK;W3eSaI;$gAu8jxGfquXWCHR1sNUOmb{un8lycoa9L(NII5{vdhRc<@{0F_?2PTo zw^GDO+&L2DOJ{tF4sN}nST2wfd|&j4C>pr7Z(lyN*@?1=$@f>XkwP;g4~Sg&76e2b z7yjCB*2ijAu%#egsXg6f*u!j^D8^Pb8=NM5Q-juiE82DY21bTPdwrAc-l5TnWZ!82 zU~k{fu|yI@jn{sQvyPMm$PhPVXvJ+j*lADwHi|5om?-Cw=RES_eD(=9D8pq$712Z? zl;Zjc4i+4i55nVTH6tsj;LOPC3bluz4WKURFiHVtG@y5mELA%wGu0`zX_gcn zqn_nK2#Hx$MSP)mT;Z!DC?rGY)iACave=ebH1)V;L))u0<6doOdyS^;HHNmNdR5Q) z27t;b587=iG5}{CYc1Hncrm)An>tTiG`2t3JSa z1x(t@e+rL32(5P~Iz@EiNJ{PskNooAgpidFyOuG)tFX#rM#9m$dq&f#xo31Fjqa$g zzlmS!ineg6(p-IV7~gF955i`)5F)#PF06(iRCmu*8c{iCB(ELS`v)iC+<0Vg(wmds zob=`&gWrcIULq8_M*DUTjtq__dlO^BgT2E;6Qr~)cNSQArSM9S!`pR4#TP8%J^?kp;S;cRZKCXy zalJsHms4&5uHuxR#&Z?t|675TU+^&{Id!UJ8Fk{|j4@I!xZ8K|4t2s#l^lQQ95YhQ zGEhD{&;eKQlpbp!9M|iV62QOz@0;$O1WY{iY!h70EoRe_VXH0LO}L#_NZNKd|P8{^Gj&<)hZ8U@M4-iLH>S zAL6jl!K?LG0_}NC^?^nORM!M+4NF%X&8ey5h!iScx9b$2g0Lm zc{rtDU~x|3Io2lOLT7z3S?cf~4ksjUjrL-SW>5=OB88Y6&CE{TL%3_xEU{}vme^$9#Kn6|g*1 zu*%;WIiS)zCvjIp!_^IhJCK-dphOF<%2Q?DInLIM6{jb28NMrDoDosXR$gqcGnGZL zB~)rrDoUtoh(10p>cBRZ*u8ghbST;T^2AVbP>|x5Cy+b@QO`m@undIKC*c8wlv{oT zkAH#3zrq7WR=Cny{v94ahR09f0k_wd#qhtU;qh~L{0BUK0kSjD!j@mc<5vY%KK>nu zXRm{6Z|l!Psx2>D%l4D6ecUHt?e;_0HBR|^&Zu2GdsfaLLRI>p9!MR9n0MMu~ zso83TMr4D`&DN`$`A|`=jYiw7YNi{_iQF=R5j330y}(88=3BtX-TY5@SlT$-*f+=X z>HN%W*5jTpa}UkTW<~yY{4zH0$5j^^6oi#|KRPKFyP(Wb3fW27+~X*u-+on7la$OX zAd{S}pYT$}^nr@obkF6Q6+pS8>L!LIHTGJC?RY0V;8JbA8y+B=7j74tfks@aS0$lm zcd3Th0^m5pOBG@2E>#(%?ozFWhPzacrAt-jck$+Fd?}8qAyzf1Yx#Bd?JMzOD$NzQ zyy22-^u1kR<*P11c*wJdU!ed==Y#kvo-f!;#*ct65LYnBqnm%nSz9)rni@#uQIP6< z5U9ISxTN98&e*WwKCc;$v-X2f>%BCbnaOa&GOcg=tG)`V`|9ji*nb>4tPjwEcpjhK zGa!NhbqDO$SLb^LFvzz!TV6uGER&l~9-j3YHYn8CT%mNIxawPgNhEv=#E4q@?eP$& z3~DZe10ZKD`%~GHCmL)aKdWk7hk89*FjH6a4#?WI1=KoQS`p?%EQXm{3HTH z*|zh{O>+&Hrq)o+k0>F4X>K8u78?*15UfwgmQ_$;TEdWwoQ09m0{^vO$ktTaJ%F zGm2iu)xAKox{=A@IOgpK5kQgq|a6(&pr&h>vwpNz(hDju{z7`-5sq;G#$jf7Y2f(CEtJ?`> z>^mRVw0%4l#GT;Q)EVVZ<#B;&>?GrwjF1IZ?rPRj_*0R>pNi8`QuwPu)BU_={2cmtRF7*@(e$apX0lWso4Yl`P@{7XY#qy&covuhh56|s?J}+P+JF_sJa_bSPGXs zKZUOvQdnvp=Ql6#lR4cZ++TCyD+JEbszVeVTqer;mBUfhdFVxZZXis}b%>C5b-yw^ zuniwvSGR8-2RGO4qrpYpKHHUd>*)}Xs^*Wwp8EmeO41u0+!mW?L+7JsbJ4))oNWPS zAdIyDOca%C;KgFNdmtB;xl9=W=V;B(_MD6P*>0WzIIwyCQM)#t(TD=4frHb^je|?K zMguX&fZ2dKY`=;8BXH(teg;xyIX~b~YcCo|%_v7~gt^o?CUt?Hw~K0^K{H#z*foY6 zF%<<-lH6#|wn*4DhKL<^$HNJrq$2Y&IOVfz?BLcg{gNF_|1RVntb6`GUXYsfiL_fk z411O&A{{S9%_!ax(8qR@eR;7G?s+CpCbxAkYqW^-U*8NFvi|qV| zkZwt|7Bzr9FT+<#m0Zuu3as2iWx*oX{8itQ)l>fQhcLIRNSg|ux1)}#J$`{W0V&75 zEkXBr3>`slSp}=tkzE@6ts!7+Sx2kEvDdiyA!}xg?Q?`s##KiMkBQnJZHp*X8JJ7H z7a>eCkAYEE#%xu-9d*8aV_>pR3U>#C1qZ(V7xDG8(kBMy`1BFZap5?`05twbKx3Yb z|5q=Ph9V87+Uqyr5wqC!7H?>*1lUb;v)0ia)v+#cvpvzn--e74Weym_~T@RNx|9Fq+RG|1|x6#`&q zwj{%zWmidE&y5lSw3`Q2w#;&Z6QW%9DM}aP5;4ex0YwDz#}4?XW5mymgeas7M;d+t ztnXhFS2E9$Cos}iXe3?G34Hdu@2+ zEnLOsL_+H-l zfAJke+L5GF$pCc7(>F|A)~M;KB*=$H$*8{Z(E=-d83KNmRC-V*Gk7GQfjdAxvpx|ju=1b$ zPG}E|UW#vg-?M=ISPw=Ms33yQIbogJG<+eNF&E|`IJXK81c-$+Nl6j~xGm@H} z&E%#zTQghC&w53ExVMNOW^&WmJs!o%R0}eThPKlI{3yLQ5WgefUCWX zWI`d@NLPjbE{^>^F0#goB^p@qE?rye1uW)lCBaVs8o(%4Bl|L0`=(+an>ZUN&h@6J zdk=a0_RY@p&g7@&vR+ASSZ``J)0@uE%;a;usa!74Q;>?GH?lJQW|d*OO1a^h!<;SM zpD)hr%6QqSMlS2(BUlz7F;2+GWc}){)vj*&T*({BPkC7^a~xTrgofAL4BaS`fLwF9 zz{=;EavU0x;GYWx+Wg|=GAmSIqI6GaiSFXT&?^Daep}Z*l|{7N|RN)5&??86|sH5T-BY}&XqjlbdibxlQq*G zR~@$KbTwrIu$xkRH`Wuz0{5l~cT9WY0EI{-VS#C?9VJxIja#Ayg(|-i4KvJG_EH?`NV=)X)PJ6dH zy`9tBIlWy}Z&yLAKmt8;Tog`$KSz-ez?;jV%w`+-;Gv1{a!QfV1~p4EP<=(JdFt0+ z>A4+0#vb%CXkEc^*Pd64V7GWCKNY2iMA0kJo@ z!EJp#baI`t|A*ie+1JF}YVH4v(8*WS{mazd?-#!Qfe@d%5WBmuxl)=y07`M_66kcn z1=vg~D%(KCt3PabE+@OC;pGfH~0^#=u3-X`kK$~U?8kohbIurNKhgGy-YYj6~hrMBJ#Jiu21 zS!(N>=nZEl4o+owYG2kH%X!KCNGf+2ts`jB*m<}=pW~@a&MQLe2jYY)iBMkGW-THC zGu=9e^AP;I)K%*od?1)@>DB7{WZpb@fn9+FvmR+W<&aZ?__`$!!~NN?LC^!RG*kjh z*~~Eyj(Mn1=}36vm1$BOUYL6sZ-bPQDP)U~o*v;#wsQB^GTb+5C&?!i}Q1*NhP*L`#f)}aq8 z?uG8|SKZ*(T~%P^jSs{#78`+)+4xY{)}I7`3H3i4AC|cb@pj|Gg2h;lEXH!|L&+=9 zEWQ;EB3%_aE4!0}Dj?+y*o=`S165}P50TJWMylUMaIxxWSy0KQ^R4i;uCDv6x|UY7 z@!6@>_v<+0&2|6RngBO(wsuOIkTII)y1xe+`;HKjf)bLbdEK{VIvMO- z`1vvGD zN($B4KUd=UnTbMnB9oiWdI_&Im*r3d4|&In9*HAU!D%nB^7ZSjNf7XmdoRbsEOv1HRs{5C0p`58)dQ{M?2qczAes?uD39wIk2eGk{-AxUIh}FbznM*3=}f_h3bEs^T0FVfYQ& ziK>|dsc$@+Qk^5|m9rGI4!e<$F54~qDQ2o-p1MUcBV?+V2)?_VXU@Fu?Csk zw9oo;w!%+i;70*Tw|x_1)dU>Q^VNcA2WPQ@l874^>`vE^SSs!ciO|<^+h4l~#|mzH znQFo0G|sx$zd;o%R)se4SSd4BMb;c`FGt{3YK0XlvSiA0Us zkZULdSnP(xhlgE%TY;5NxifOv9vOPnm&N4zH{h0@a;Gr=$@e56{cYMy%%}{cwSElO z3SG-+r;}p+il7=P7JI&iLLeiP)@eJa86{k)WkP|r16Lx1`hXB1s9;-#a#ebzGp#yl zT!xgB#*YbUyuue=KD~In=ASi(E3q@0bW^5H*5Wvve9T7G{h5%+NhkmMH*nUGpX0N0 z7(SRX#k*Qx!`J@?hl>+8JI16j#Wg8K=8&+-*`l!l%+()An~TN=c0t$pcQa>;2gdqe z5&i&rjP1Bme7~5pMTw;NzJ;?z$ybQ}TH*6gg{|8-TYO=1WH|f*yivA4Sh?$hjaph@ z6SuYm+#5hvzMl9j8Hw;$XiF+|bz5KwbZseblDaJ|Ff zc7{^v5N2-ZEzae5W`?v6`@B?6qj-1&XRFhtgXkqT;AJy28ORP%xm!^hVyHI6S&vK{ zdUovSkq>Tf|HP$8VQ%P!VaSLR#dLXEgSm7zUz#gMqi^PGT4!sgwE>`&FQz>N*)u)2 zmxzFlDv)WBMnl|(TgHmhler9+Exp3by9Pu`WwOzL zG{gNoCpeSfXQZbF2GFNwXrrYDaKP0H)u>qA@MxgGImi?XRAA-f{n-L@x#qpN(m;J6 zm>yVG^9A4m+K4IB_OP|d>RK8{IwiW z3xvp^IfT~DJCGCy=U7*GBG6Abb+03`82GMVj&`Y;|-s!KX9YX`8S}3te+$WGC#qbGadD%pKcw8@#<>i!HfRvs>rBwuk zq|4^~e=D%^3xr`?dZiPl9slC^mx_=+32z+#;`o;;S*QlZoJ_yth#RK9aYe0VP#v56 zOXTjC$k6ty!6<)6s4RF6Ue2_H57xYd4PVA4afb)^i|wQtiuLZ|gpczZ2GO>=Jvc%n>Q={+oVd zU^In#5$3vZyDPD#JvDbL%fwI zqm*NA+y;?pWF(OFu-Jo|N^sUr?%7xY!Z1-mF2EYWMk3o0Oc>w6L+Rsk<7x0}kEZRO z0xM5b<^y>Z1x9UOn2T@wLUjI*8CRC2gSlc?@+h3Wum&$9NRFE&>k`cGO~0L;6R*e~XwY zgX-AiZ~dbMHy#CQ0JpOA0~JQxrSC`NZsTlC|AADIUwUQ*8`YK0&&=j?UXJ&s;dO7o zRzVJKKzRczbz{+*HntR4dDp9PHu0CD^+oUZ6z3bf6c<|=g(@-mAWC@oQ<1ZRH^NZ4x;1~PHQU*U0e z1UypP8$o2zwIvh~pq1MKo1kfX_7~#EJsYgyac#9%#~ReYuEDOA1p7utKq_=B1bn_591K-NIWHe~n+qq9?*;GPT!2i1K94L(hx8WH)EAtJVw%x%bB{ z3mFjHct2WP1F+wQ0F#dYB63}dZ??Ea)vPM%klZDp*yF%9HrsRJi9OO!;pNafJ~SBn zF5m{}s(^6~+JZ)pi;Mzh+>gEIwv5bWc?Q=5Rs94A@!H!&x3SE7;K^_NwI>e&3@~fx|>$dRue`4wr@X>Kj;+`sj19dlzWp8E>LVknXsF%K7pwBB#{JQE7svaJ5%W^ zri=Nx+*E%)n~#R9MwyFUlyfq;BjigG>6^{0aF3OO_KjRke!brd@@uSOa3hv|z9A&P z&-hhaVCDTQad;&w;Jmz?mzVSM@{hsq!(%EDC!M~{d8t=G3d5_Z+M~n}BT#jmo%8al zx=W8uFZCNsz?3wRHxyXGUh?$`EOZYH-YUz|uCj3%#;Z+Bom z3=xa)#XI3q8L#-FHwpH|7#rBJXWKwuaxghGGPvz>(axYs1F)Qg{Oy}DU{WbG-Sj^) z0~C54Q>m-6pgpKV~-Wd zhwMBG8@(&KFzpti@>=x&ti()?;Xl{2$P}@SZX% zPyTXq?aGq^b3%3nr%o5N;|}DkL*ET?Q0A)R7$J;Ov1C{NvCf`#dMesM#~mPO<5g6S zJ8;|q{!rlRw|2V9(# zsp!V%V*(4Fv3|H+?FagJqYx^mYy59EHnCa z9S2vTxDsp!H&8v`%ly*Dn)|4$9nSv`mFPo}u}bv8X5ABEGuy53^Jn}QY{*5A_)%+6 zrDnv-%?)vHX2j#gOd7MjakdQem-WtgIjB*kbOV)1m{*@F!AIIaKOR93KwmwxMrjSyI`w|Ay8aZ zG40LeJZZ(v!cRSzSq^OdQrD#qE` zq<1CX1>x6;*|aDd)|o&?5T}S-WjNWY32nhwapLza-?3)>nmAj2VojYA^eu_ zgYS$`E=xeX<-4*V?N1mAsNF8uoOZ;|cI;oso6*HJU8G;!cPssO+=mHQNAyv+y_Ay;ej`nbGY>c&XyKnf{=eTY*z!B!ZvZK-Zxe( z|M>`s%Ea$2NM$j>CMAC7taV~=c(7mObqB(H5Fv(NKnBON?uKFUPf!P}=i#4=Icu97 zy?Au&<$hJ~>UsXTjIe!uVJf zwMm=`Y3*!AIp1O-bn)K$|LPMHd;$f-d_!+Q$?>-njaH}y@nMg}e z-8B6z6)Ano`C8?II+;dvA_o2YTh1@AvNswIZ|%8d&Low798PQc7ZJKv*92b?PEc;H zl_=4RZfenyj?US}Y(6!0VW!0M#Y{St_0iBT>(pSYK@7}-D-ZJo!$V}QwT6dfIt!OJ z#H9^Em9yDl!R)9?ULU`%`S7~1UnU35J68zj3K8obfb8&5a)lskUXZ$;v(=C=q#sko z4^5#(kF#|mNBwj$Gu1oi8~RK(zPCJT&5^Zm)|ME1`QFJP3S>}Pt=@tO^@(kXIP|~e zyPPeXNcJTsCk%c3KVaNq`&c?OIxzSOLl;kIyXfe@aIpX4onxk6ex&VX+4#`t=-_~1 zCjX}CL(6$C#p6gR?v+Be6If-I%?Yfk^a=}3q5qce$O3DDl@CGD#zO;e%E0P)9ftlc+IF=xsvK$CDnp$dlG=rTUqqLguAsr!Fd2A)(x1NAO zcp=j$UH)%{;*u|V+p}k`FM69{uF=BwM*`OtsAi9Fm20I~!}UdP(9Bg!?>mv+cOux8 z^d9$RCE0KzcWZ3T6To2D&apdHJ8f=;9xkFRZ9x2ylP#z6Sg9t-?OVFVhb=^HO#let&qr{ z&v`1*heU0c=ClfKlzh%Eu-54-5PVu7Qe1r8CoW_+Lh_0ExAPg3iHNmhj0@SVw1nwG zH>j4#swIf!ZJaHE(2c&Lm$K%$ziQ2MgZsdnNr@`hYB>vw1zQdCY~BGq9Z9jg)qA#0 zBojlUySJUTZE$pQq|p`g-ug8y_o%j0N!Qw2zXpy_wN=b>N#7%MhORDWy>ZqXXT6bQ zNs;k0Mq)dKrA&~W!t$6QV;oe6$Ysfm>J6Tr%x zL!40%#aihvgIcR|ib5Ose9Ar;d@VZ~!rlJ1OAUOM+&~KO@`)d0U%6ShC#oY=B@X0m zFNYSjC(H9wyy%3XeNQ3m;y!`+p99Na$yIU7n)%t%_yc#DdUk|QhO;Al#{}VPK1a6H zfRA}5H=Xq;OVdD#rzSkG!t90MIFp(BZSOWvDnSULyInI#4unJ~ALW|NB)eu{isauG zkp1|JH ziI7pF^tLCRM#&UU>imJLtjEs2hP7r%mH4yp&X-w~I621I*CITa6Rbk!5lE4X*-}&( zT5v9KQH|32-KiYs{RdJ-Ua3|ZUTPs)-IlZFh?a8J!BeFxhJ5eii0D(J*{y;%Is$Jt zoCOGVMoy}I&$iLYk-@}J|F+9f0ft$+eJ7|0Ww|ZS*$PtN9X-mI6K@}|ae3un(C&@LZo87Lg*O8xn% z=O`_UBjXQimR?}xPO6M0bfAHj5#NEQ{3k=%Lwa>vURDYSOV7o>6Y9wgX#3rO&6RGF zx4{I47l-}Z$~K!$gW1JacftPDHIX@6i(C*m_-As{J|AS@Y+}q?0W`wt8%yZj_74SC ze!<7W20;(Nenk`IO7BPn6co!AOirudvWit|%())o2q$Yd9dga3gz z6z4TTT9yT;RTy3h)|Hc>;+wn4DjXcY7T)VJrkF{LuE-(LX%~NjpjGma?k00L87k$h z51sQ9kU@2<-(JRU=3IQ)+!V|cUwKMJh;LiiDb$M-)?Z8$q_S0+`e zN=LOTUz|yC?iD%PBoc0fN77VFxNtPD$?jtIrw)Q{l}7P6$>LiPaXO=8Z z%o|y(x94%+3Ii&VkX#4MC1;BPw)Md%=%lJwuqEv%u=3e!sbeK&!v)O`H3m@C(ev9q zM~$VlAWk}$1*l_JIHn11qvN(kQHw@YN9qdkRKmQJlw_io6I>8j&`M9R-A^DYISH@+YBZ9l#JhyI&as%ywB;8w!JW@58>8 z=rxancfHhZaIAibXUBHs20VogZT>iJDCKO@tXvFkyP@3()A{I`09H%SwgBs*pmW^` zumzZ?n%qFbW0)Th9y+1j*P2jS%+D4$7U!t;!5au11Gd)!oZ18ZEr4VA1m;JWZ6<<8 zYkqX5YnfjIk;|u(M$8t#Y2e_ra^v7#f`m4Fa3k2I!5et2ENBkfZ*_Oi&-^ToeeLsW z;O1GJY2cl^P6`>DK$`&k(1RK}j?GR}HPh))shPl2+xxufLDMF8LH>fSi^2)n_S`iF zJ$GFiztm{Yw%gM+hJEVpb7IuzW$-V}!{F91{gNF_|E~7k`ablmlRs#;ei-&FSd0D(j@pZ^2K#xZ@E4kXUxAfR zJ_r;VT!W@bzXTe|1E*HJIdC!#+{W2Ta1E-AzU{dkJHRh0m69?g07bANP1_yItreFo z1y;UxCk`nTi1HnPdS{y&5!eTOeeH$#-#BmRYj+k{dHXW_CZdwOV+ChxN?z7Wb8l*B z>e5s(10^wzY<8TjpUF>oJv(;v0LVx3Q(o`R@sUw6;Z{f)CymHkMv(eNBOtx4u5oHi`$GAHffTnaeH~FoCV0 zBj0+Rvj2zR)fbPj|1Ux(q{WJC<<^JP+U2c35ZdMAP`j*gm_Puo6tx#5_~`C_K%>pm z9-pYfBnZt`K|{y6LvPC~dQ0*1R^-~xKBW#>2F8eC!l5VJ!9fNISYFMtgQm2wC%WrZ5zWK zkSSGM&(=#Y4UT7W+p2JId5iUf+x0A#W!*D*PDXK00vMii=?K-NqG1*AD-~m^oB(+f1$XL5kD?l~9SiXRN<=N=*}@MdXi zft8m~aa#D3MEW+)HeiaIWU6!psJ*h!-#M4bPI*P}kNybugH$D!%HG*$pt3@X0jjda zG$Wx$45%%>1IP3yqf`tg0p6TMiSFE~rPXVYR#e=ca{CX|LY#Zxg{f@J!$HTSlVg;S@sGJFE&-c95p8`le%dr!Fqz;Mb> z8^O{gZ1Uv}1A2_QVf&nvx*Y4oz(xkdHsV+^bL{D_y z`r9D@eLJxawfJHgZeB1c89r&)qSo>i z&<&jb7!D0Q=O-)aUcg#FKWf}QI|cCI_Z z3(5B$Fq~`Niyu@ooS#hq0s@(USNdc-Z1p@&a7gIRL4TC@(C*;hRUhetZV6e$ChvF?KtCXpr+@m3lloiG_97TjK_@TRDnT8Nv= zg;sTC9(y%6BBDV+uL5Dh36prF0on5GF--Id6YzF3Zv03{odl zn==WM@4UqzOja5+TIUcEgi#_`F%&cf0kBmFmGUc$BqLjgXe&!7AYYmzJzIZ8-NV<0 zz)ASxweyYfXE49AXVHEQvl zX!!!Fx3R}cZ}lof7{HGL1-Yz;zml_cG&9oud;7hjmrI+Hj|=XriL+(<5sr$i6mssj zO`Pp4&h@6Jdk=a0_RY@p&g7@&vR#!m9T=IlJ>j7mI}n@Sa@_KL}rdcCO(&lh{g_PxqW^Mprfipy}=!x`w*9IW^2XI(HlO>Ry zdjOoaUZR@Uxp-mlNZaVTn}3NP#F2?}Ir>9~{rhKm7G=P5vsyy25eWsQ#}IoeO&(YG zVkHgo9qi(poh$O=$V<{PV8*l?1hO}TtCi;J!&o^XCtX(h(71FGi21@T%Q>z&TZ4oX zRhN! zr85Z~?|RBwmTcjymEVi4KRyTEDus;@@cR_&=xPD5a-uKKF*sjC`^ zvz0TMoDY>@@1RGi1jUr=9`-J(ZMcfDCgF-3z>~9;Vl!}90o>(yWuRhv(VZZVan_m` z+&wggWpePRCeD@&3{4~xL;Xnr6aLuD*|LejWO5k2#loK#akjXBD0x}yf2Xi zPqnb=QqDH^O(w@i$415`C-%}R_6`qTIyfADvy8KqL!-$=A51dxuAQ^4zJYlaz`uH2$PuV(+o~BCf?#xQmuT89F|?%& zpz1k8PDI_f#ObTsb{N_col>_2rI~JAqJ`?Vs|;-^Z-Kh)8bjN48aS^rwB4X-3qql8 zy%b%fo-1bk9Y0ha#dg>>$ zj7&NGh<4$|Ttn$cU~Eb&3|(96yUgB`>BoTxr76|A;B@45!QdX%Qaeh6zXDMe2A8i* ztt5`Fic^cQp>kPKHrN`b&M+h!;7H>^nqUo_sT5u0SX9Yu^6pym*N$}uhC^sRbvneh zML<{6kKnOrL%T<+bYXt3U4;wQgA}tC+GsMSFl1piqQw~Bx~fC=qb0BUz{e= zX(B6Fjp*Tc7JD-me?;Dlcq-dCTbjrpn&2spL2Q082z*y*=&o9!#;v=+%J)1jh>?`M zgzVqo5|7S{Wcx0#@?N*VtisO1qit}NqMk#1u`c3ktK58>D{ zIB3V4nwZM9p*=*AJ(sIzhRqGyXQ7Z-^a)TMH;Ef3SO*-c83{eb?IV3bOZZ&41Q|2q zt_%#)LCcg6R%OqNz66RAx>;o4z_c{1Gd7zS9Vqo|XTp&nM9u8XGtp*?#8I&ZESaLB zK3fgwc@b9cHuo%$!TJg(zmGV4Ar=ER-ZzEE|nMtEIhME#?ZWTc!&zH4pPHIDI31pMTe?c6 zN_01mJKG^b0A9M};adZol6k}E~lo1BGHCTJJr8Ba8dR^8JeTBXjMA(I0G ztpY56*SiX={=|1@{wb0n!I#uC`is69(z1Xa1E@6&ptH?5+f0SRM8X?qo59ng5ik)# z&Nkz0Gx$$gI?7Jij}m(uHRZx%AUYGkKnUB+nq<-Q{5)a9`P9@vDqmpb?oYDJf-rf^M}xu)IjRCP?5ItY1OUV)vQ$*Zbe(q)(BG| zukd()#VfIdMOaT?tP}gg#k&%-?*M(aO&AN(+FOtYFV$H zk7cdy!DU@*T9z2x)-GlRQyex9IA9mEo!{*ta2hy2!xCVAw0S!JU&2W-zsBRFY4f@S zQZ*1bUFOYW`vJL(z>((HaNy_$M@rRoQiwUyiPNQ|qh?f}s0PJ5H4|H5OCFjYGy$;- zsC8HE^;EmYpy#ej$rYvB9&$gTFr$(`Wb5x9%CPs6nxH1^r78;bV-MlQJP_pg0 z^JyzMcMIF2ZO`2;c0I2TchI`$EvBBG@>RwN}CEr^5=7~;!=Lo>6Ga_b_9$W{94N%Z&K ztE^?hMVzgeO%=Ty-*s_6=4wO`3K>scF6f30DH@@5^A4;$bQk;=d{CM%fQKLb0ex8K z*?9MQXelx)%WH(-o1-qx%CsC}F`GgJ45rH2%E(R{_D0sOR7Xx?|8XO&8O`U$Q_~)# zqV&<`hz0{j@;IfBOxLE_S@FW?^YiW#I9oUE@e5O>{sWopRME>x$QI$Zb=ldVqxI7s zpE!^|bmTp)p7!`SBLBFI{58&JW!THED@Ic@6gd^?L#JDP_X!17K13yHp_$~Y7R!f$ ziot?avyycYrQ#SqsL5)U_=rXxB^6DSK+9(`ZdrCJnrP25E!6j{g{e&X@k1d$22=x2 z9^5<6UKI@iN6gO_I0l>q;F$G8H26`{zeERbp#H@G96RL{&aZYA2sNu&1wzdP3O5iB z%zC)!;I?PqLjM8`WgT+&5%QsM@-KQszFbd4{rHLTgaSFCqb2I&;P0*`hT?t_m?052 zYDOO5k*iXB{R7kY?i~n=nwzQf>uQXiINEdjVs^HZ3a!iNuVTFonpZGU&bBElHWmG`OTDSt42>B#&l3_J#3_J@Aeb?2jX&=R zTtt2ImNziYMzJ;+6$}(!vF}i-IFF;X96|p9&_nD9e&B3tzBt`mnk{B>)BB658ShZO zcm>w)D)sJ9r6EX7*5HVCovL=}e2#lpa&?R2H7$BebF;JgBKJ4ENj^(r%x!)9O1zkY zqFscbJ5wcZssXzl3{eH20xQ4gd-_SO4<^-sdDvjx<_j}kF;z?-$fQ%*XK2jj4H!oY z26e6hA5cqW*^=uu^r&C!I!4ee!HgVQAIJ$dyXyQWbSJ>4902NsIy-+9M zy_7d!hBN-kS?jLE;Ap?DJ!nNW?RO6*M*1j;w|acAvd6b?8%p*K4{1BttnFaQMSbIa zqk~l1A!Z8Q+8$aj9!m^rXRuY+em$+hO}*4`};=w26Xct(Y9Ys?e`if!zJ2o7AMBWD2KIr z5tG{1Er7eaHC(1`zGytruK_-!d5K4x)@0w%%e4d{rER}{JTY`>UvhBo) zM<@JZI5D6guZ}n#YjOHOs#qV-9NYs4iU{>*Gqcs5;<`B7G&wrdKQ=J9cX+J7Z`f`T zaP7XA>ODqAdhZh1*T^^FLhcbwo}8xl(KSv}kGnCKjTiH?UXf?KQuSJJ(MP~ZG`-Jf zGeI{|1wqc1UYIH!;2`VNH@0uuDX{YLC(Y2n3B;kuvVlw*%KD~?hwGb*4pD-wz!_8v zuD}z1k+W4LkMGK4y}?{MKb6T%+cQSX_sh)yiw;7kI*kSlxUS^!{(LSyR|E&cgtx!w zl?3{kxUtpgXj2#xqfbl&Zzy?O;N7@aEM-dEqtao3`RbwNUpK`FdD&EMx_5Lgn+2po za0luM*>CSk&eqO`cwaewtYEB|aDy?0vrQ^-a*k)RRCCn?*RFKdOBMT5=>y(SE}fkN zEb7apJ;=)SQh zUH@?3#Kd@C^1{87iQ&EDiNRe%RJTTbuYL|7ql~kB??W;j4geX#B=~{HX%dQFZzgZE zmoS5xvwFdqUM5hWYFefZe~h!uK!Z}*?7md`ie!G`aEW^}BvXaG$;VJ72yWP~Y!8E* ziNj-@wU;~&I*^>~t7#f^36yAu7PxgbD_t=yhMDlFQgYyJ!)IwQ zRcNu{%QkcENKH+JAeqmB;0g-koI#Q{3?^@j`M58i^7g0ZvYZeK86}(5uY_v~XxfCA z&gZ7=0nm|_S^;7_YBSu5V7QS?Hk+{@tsO_BMlcwL4QMI$W1OuK01vNyXxu0YyV3`F z(0TmvsAVgGVR?eH4WVasg<>jPKtK-R^Pl3c>Z1f*0Y`wY-s-O8*$JW}|7u3RRtluR z*%%Sw367Uve|}~rAJ|AtxKP`4R-`NXw&U8K;A~6DCzV6h-I~Ak!T6Z zqVXP#uEOZnKhLYE4Hzr@bM0?D9_t8n8v_=TyYMn#;j#xqcDs^&i!SN}OxqjBlW(jz z`@ru}#|Bohf9;Cz)ZI*Uz|w^rb32; zYRC;KWqYgR=%P&Joo#TGsl0JOqHNp?T&f+^_t=#^OuiqqRPXsTo>C~obv~$87lBR( z%W$1f8sIk0R`t)7cz$N0kcGoVDR{QVW*e0b`}=M+5D+0OLhq;Iwi53-E)85c9sb zaJIaZI_OP!Suf2e3Z`=B))Rgoq=Jb&ukgCB+ZP6j8q{ zxM+3BB5=-9&kY1v_t%f&;08x-#2}=QA#RC%Y4>Rxgp*rSEg+W9>BHvZRDqRy-c`$q z`#!Xo7o>-tSG*_OAY0Vjn!zS<=RyRq==1{7!L3i+ttP1!dv3ZRT$XLm%bzqICnVbQ z6JbneS(gNE9tZa$Rx}ytXz<$ePjpj6xeir={1doeO5z+H+;&3=rn>ZZ_4Z5vtEFe# zvt@7=c~P&lWfhiJXfLZdB~pb1(*Mw~L&k`H86V2F}j_KfA#0qdPw{ z&l8=F zB^8)2oGQt`u%215&TJAQfm^7O8aO`#!Z~e@ArF#;w#jL840O^dR4NSTWYV=%_&~Lw z+7nPxv)U6-)+;4D%>&R8r+ENmb(J!F{eY{K5$KM9`Sk6Kar`N8zGkQYs0u-r)HOMQ zqRng>W~X_m0F|u_zp$zdYDjwnG8B{M;eFr7QNVT54-**hvL5$ps9yMiNoyx0@ZM=i z1w#KEfosqG!Wn22y5DVzhua4(t#sM3J&tCtnP|_pVtGTHfgJZ#LGWFjv1;|W&U{Je z@mF!q@_lT}^F8x+n|S`B z3$l2{X+HpSs6tp*GcjESR=(=n1y*hgBU!Hc7QKOd1gWf-n@SaZw(QbWb`C=LS{?ud zRHfdOM3N8u+?pi=$+>k7M-|a5Qdg~W@PXj5@^A!BD#tzIZ1* zpmJ%;7vO)8WW42J!D1K~63&i;{-j46>M#-#BD@{mk@MXKwok& zIW#i3?eYe*NH-lJi*%D?ku*^p&PeBsbk0bJG#yOb&PeC#592?TM#bgBtsx)oO}~$@ zNEZN~bo%R&0V=Ta1uX%Kv|%DMo!dFbc|MnzO;32mgPF8<>6x4zUr~b=v%VJdxlDR* zDKnkhd+^NO;%qvOpOV!B$V_g*;Q|&Wy1yUZY|V2uLqh#<#{P7%bD?dLoqZaPo4b!M9?=BOCqD>PC$&%d&t(nziGQ@J-7T_}^fA zgynb{yoBmrEfBTX@*{Zs3q1Z69_Xg_Z}7i=hsTfM@e_Dpy@}=>4F3N#Jbn%jaQ{BVd+J?;~X-qibN zomF7v(Fe2x{Yin9mmUXbap@WOp+Jj;urX)inqXsOfh`WCz^6|(WMg7LDj!q>uEUlP za$OLvL2j;JgYuk91k)*cLrY&R!kKe5jL?WGlya_y;b{$EBk8n_?ifzd8-fiuEL3|F z&H)X#rGHM*TL~-V&7ZxB-Vbj9DW>Uzcyih}TRWEXlKGKT?(ptnW~x7*otw!OSh*c) zSDW;@AO5~U#t`M)K|pGcRxOrM48dj$TJR0f?Pz>g)~INQ`qAy00@Lji@WG{3lmmVR z;j8@$e5Dk9+OIIQ%}3fsS7`8Egx)!FBkg&BKXIH9p@(L9Ffvj=0HKS6z&x*tU*W4Y zZC?%Jsv(QeAzyMebjpUdS8K+-+R*kIP1|b>Z7Hq3dd@chz;23#RR{UFE8BK}2-C4B zzAd4%x-AN|@o?@qIextzC+pYSL8VaCq$7x6y1AJsdMiytS2JY@&PE-MB9t6&K6X73?H6GA#-1(nrAx>|>maY| z2+wcCt93h6%U?%|dkxgc$XN4e!{KPQ=(uj99nz4FqW1mJA-Yp(%4pVLm8OgUwiku- zu&BYq;^c#HbFO;>9yz!hOd7> zz5(!g7b=CiaC%DG`%z$fR*Jfo()_DjBcylOZ0pa%Wy|LAYVCkz^r1T??h~-|`&k7w zAwSW<7vmxq<7DD`M#HAwL4XF=_5yAOOOMlj0&WJDOV}nN40LuIF%a=Iy}oAQr=OEg63G@^XEboJH3-dj_t zub4!V2D8fYdeE=HmDEE0B3(mpg+KFQUdUD`nY67xD6sN25p->hR(|v}tg7dB;N7=A zgrh(vMTmvRoJBhi_vdpwmC0eim{lglkA9;jCVMs6U#avdn3P>gM8dIGe>Q9o z^dKgyZ01-b$09iv$+1WZ<(&w_muQJ&kti9AQ$p73d#N$sQ7*>S_XUhh_XJPzOgfR8 z%H%1gtDc06_g-Sn(I^u#$~vg}Ihto_LPo(G5s(69s8FSX-Vws`SMS+2kxUGY?%sCV zw!zWKk!_bFJEY0xcyFS9c4)z-+D4$bY>si7P|QbX3?Cq_)ur05;`SwVyd@BwcNPLM zUN~~zSuu(;YgL8QfXSe;<{YW)2Jl%j|NXlNy4KV6QP6;a9-=bUHrU&4F0k?vN@E0n zz8Tln#@WgdFE=Myh&k&hQ7C`!jF*D~9VSPud!IBgeX_Mza@3N+33@}~_T^3BtX-O2 zeWL^$8q#lhSS2aC_un~dhcw+I9xrCnrLbj1SF4(un5Ya8yy9#<%y@`T(kDQp+9XyIbOU=d1A0l)RNni;*;(&DpeYD)a5&@kam zj<{eOpR7rcec!Ci=>_LGWEPAGvhRb9aS5`uRLmvFb_uf8yg4!1Lf(+6y%wchi8i$T zV_wN9cVX?Q=@Mkix>1)PyW;rSGFwMUZ&aE6k+Y@X-?S^^Wv8r}q2D=XNY-H$Soyx+ zA0aaYYCFdaX>Tsa3^``VF+(mDwuXVT=7ODiNCuTH$FlH@Xi;WpgQy8ok8{+=uC?Zj zoO4vXb5v!`65y{ieo-I0&iO@EF$M?}=NA>nPddM-i2Oq8Bv<7&R9^>7hHwFMRc-^N z51yV!fh^Zzx(gs$V>6jg(QS`o=_){V?6P!~eo>sA*f%|0^rllhlbeRjz%S461EVQE zS4?Fu_6`qC`HoS*WPAm1(@+BLqtapZut0l^B z4V0&7h9n}*_tatF`*^nqX^Y$mAKzSH<<751<|-ZI&aW3(x%)F!G_%0UmwXl;e-mjd zpJiC5A!W!Ve*^nL9;K1FVgKh-N>BmEX#cgqvH5NZj^|*%~P;AO)UC>b56K~;7D_}x&qlCn~*~| zJW9>)0Alb?c-#e#x`~BPq5y}k7S0lSiUC-+r!H4aB$HAynCBX@1~do+`S^KhYbNbO$c-2@h-h>2Z-y zF7gTgx%#CxMTK;M?Oy@cQRHoEk4{-IERo|U;%RNu!=Z2^>sI2}B+Hzawn4xyk~)OG z5G^ZNCtYGr$4>yqtxF&7oIpav0!T$di)1aJ789KlhzzP@*kXYE1gcn`+lq!`T}$Lx zBF7ThU7k(f4OtYK25PShOaEi%L=l3vn)`E36wZl4Wt9rqIG0`-)np++j#7}2&k~)3 zM;VgKto}HroPm9UcMHlH!si2XwW-%J+lrqIC}U zNjO4CAGAV#pH^XNlwKWal4Km)B}w+x+N8E{x*yH$Z>vCawj=~%JTvcXNzRsp|C}x9 zNNq_EfGtU|Gi#GY&jT+gDPNwgYv}!-sELp1G`Uv3o3gY-9N6x^ADt5;H@+;z*6Kpq z2ydnn77G@`nEC~mAh{(q(nhl%xS|u*#S>5*`~_5+uNH3{i|Skk?>z9vVf%4raknHm z@YycGCFUb#k7K;FD22vNm%dnJeIa~t1-#Tba3nz065S);KXJqjG0_>_WKbRJMz`}H zL)wKJrggw)Jr-)1*3cWy){V~1?DLAKUFy&04thn71-MrJ8o$NQ)DGJm;v*->ibga_Ttq1c zwamX2k{9{at7MWJya>N+M{3)yp@~pcz4;GegBq!=M$2}DJ!|N=qg>%eBQnF|NA>O? z3De43jo|FeiKr;b6{rzSQ=4SqN8t)=Rx4g zdK{9;Se2FdlOY#adG7&uyaLrR@IO+w zK}FF-KI@hG^EqD3XR~OHOMEy^YZI+~m7p{-f!3x{lZ*^W;(k&B155M#mmdCz5)OHVu6*{PjS|aB|8&eg5SOjtk5|8?-6)F9>B!k zB6|eh)6JKFoq)6UGxp8SoRON%oN*9bc@qBz9$!Z$_mjUeFmm#|B{O3nMTK;E8H!cQ z@Nc2ljH+Osp#`^|QG|VtuJzZPEt&Q>;y^g@U?sp5zdbU2>7662)zEP2Z{X4Za~3FJ zO?D?BeeS`R0`;5^``i)s?Cf*S z8H@6mMQ>IcfAWRL`9%fJJk^3Q@Q29n9z8RQ1==2tOmK;9pGy@6`I5aSu3SUTh$ z-m(gNYk)y+%c=q^FS%aDtUUOJ0xPc}?|Jca*@Zc+IN1+-!hFv-Dt$OGz-57z6 zwA)KJYT9zP{D7C5@`}lPKFc#iH3fB&x_J<^_?iuB&qt#JRrk@WPs8Ka*gpW;pVRDYNWMELs#Z3#7>|pR%6s|xztwigIFA(#e7qDNL3d(ilbGznpX`adFfa>Jt zve}*!Pc*GcfPg48q^;2I%6U}3VxCu3BQl-$8Pl{o$QMmaTiUIT6ZGfj+yl7B%C_f% z%6HRCR7h|x1j3%nBWZ8~3An&f}0CTVUa z)Hl|nakgUGX3T#&rlLzV0C(dZ@t4ulWFW7vXJS$TgBc<^wY_a#Rj9EEZJVVih}f zgxln=tG93W?!@5kzU0tYZK`hTPC*cP=<@|uo)LB2B*F`;US8rUo=G=o!Oz#vZ6ev1 z9O|z@H(}QwE)(2Xc4gF?tCqGltr61Jdc2N^6IC*g58Vs$A{|OV9$EjZW4R5r?ySq< z!5XU~mZZIO%x#!)R(L)(J&5?A+)x6Tiy1OO=x5=Pk_oR4qN(5Uzg`vB*VXx27%nGdhsjuR^ns0+ODP6)o^#z&t@KG2x<`Thx7*pus;+88- zqdK`2o2_U=m_)#(v(V9K!muZwJDo7M{7E8kIG$3F#-4M+OUbt9j&q^sj&tLCj*?Xw zC3SOl$?sh9J2<-nU1glKy=9J43aQ)`l6Neq|F7-@ADLT_Dw)Z8%#y;bpxv-#N#5 zJ}2xLD7(fp}S9C_vjSl(u(*7c;r( z`jYp4dbmF96`V&+$$LKyR>pZr-dlIi=ntVw-itlgkz&{E@>Flnl)P8x-sJcfnQ#&` zobGpl>wcrjdsj^4GFg$W_y1?_&Ew=O%Ea-SnaoU*nPf77Tr(L=!XX447F|Gy5#~x5 zoFmK;j9E6knSL{A)6?&CcTHf#?Oj>L1q78<*A?8w-`8W;T^BD_L|jmicz}qUf+ETt zWjQ2*g6{A0JoUbBRli+tRduI_z@+lW`3#iC2#*rwrGcu1#g{EvjdsYZu7QI;Xa?s^&8A^-d5hZVkWY{gY zHs|#ZY48nKmw~3|09B&A{+Ce1>xNL$5abe-^2ge`3N<2z4&Bx{1P_{2U}Q(iI)@Zp zMIm>twiuPA;35XI0s;@JM|}-i6=z-cwP+>E6`hk4o3h@Ro6CWv%UAsMPE0}=-pCi? zWCf8!2bHcOe;NSuTW4$NdyImRt5{CCkjoRxQNy=9f*zw&TKqZuAPCPbDXg^;$)4dt8Do>F7HSFe++mY3~;mwca{NEfhKkgpl>tvEDlPPs(OkZyh`yA>UQi zQG}C#6H%DZPJyf`r|>|V*CBCcOZZ~Aa?>R&{hpFD07K>}EbclE(}THBQ&pPt7o-FB zV&n^;3F^NEhYoV}LRC0!I$j(x9ZNOMH^jLSYm!|Bx|a}IW;KmUU+cxo z*x1wGGceLVG}zbEKGf6Ejpy_RP(%sbpvZp4!I|rlk%wu&;}!$w$~SE*)Z~mkuwnm>p9|9}zfgEXrpdC7mUWC;9#u3xs<0Dr zW*nA6lxwSji=Z-f!JB=`ufKi?X#GtC$--ji}CHhH-u zWCzQT{D~04&Q0f4a)#zouIdsvxSA`0!=5o8(w=Le!bLUHf`~wZ z8>7&TV6z!IA<@S8Vvpx|7-lphIQc}mDTOO1OAQ~kprvqL2G3!{0C~!$L;;~$A&);4O zh(hIM9YqueA(jd@9k$n2xRu29&N_#LsK@e}o(i)M}$W` zi&BfCZL262*|0da(x%XgoExhsMuMo2qpgpDh`FMSl<}pLi%tSgv`ooC!IUsB$+{MF2Q4%b*CT8w$|6Ie0#3=r_s5qkzkVPisjYET@o4D)aw|`M+ z>=qQ;N-Fjma(!I)lp+!t_gN}OTKlyP-Y7_BArJ%0mRPnV%BsGK8eQQeTDD}?vnBB) z%DO(r3DPs;`pCQpxa;GgBgqMOQ*vyVm@E#g>n9rMsQyP+tadpb?Nx*j$OF`HDxQOQ zJyR(qWNR_O+i769y;{&cF-}#ksjACT(zta^cgIN2NN<17nsZPK)o?2G!JYgB%=AA{ zQnaBfGHX#FGt-Xwg$o)ma}iH>CXCe33nL9jMiM_5h7UI52N4BB!x+3`IfOWD#kP?2 zPt|rm3t&R;l)*B-+$Ec3dF3uy+w#g?vbGEZ$)OWp?vk}FuiPbTTVA)yb~T!o^!#Ux!$-H-E3O%8c9Va zyz*t+DHpKBzm@G7y%_X8mz)j~ms)x{NCu&@(?Kfqfcx3ALO+k_wXvAeYO+XL`Ps_P zR(|%c!7DP}Lv@|4T3;l)R;@2_2r%<-EMmA1%0%A{CxZ7^LoZ&#dPg}${G?_s&P~gns6(Y z5i-l609UOr3si>W&;3z`s3@*K>IZ5%(HdIplz|h)xPD5GiU$4T%g({k zf$nYSyfNI~**nlp$VFPcwPjsi3QG7Sy)+b*@AA^S-7Iw>>3`EcPHYO8+Vq-Gn=#~|PBaV$shWj~UBY0)3 z%`(&`*edPu%p$_x=6#NlpN&tVjmZ>2Wo!g%vYb!T zRL1zu1`T5=Dhz~-aDhk@Vs@?H!gn@OvTTeg1p*L2Wk3K!*o(N>fmKBF8+J)4XtA37oea)my>eS2`Ag_cz!voGjEM! z5rS)`_|to z+Je=-^%>a}Tv;tLA^yq9kodS$n}F(6fqB!rg9rR|qiEWmSDcyR5d`VDPr>_@Q*S zW^nM8Z#Nq}Rr1Q)Zqu&3`m4C1%*vryIUn5goHCfsM9&OhrSxoiR93#dVgP$@xLbZG zp|WR?CJfH0W`0n?hTYJ%58`l&4dwGQ1&+b|N*}y}z|oxcQh>v($$-8pI6n>iV1Ddm z>yhArnjgEqJ+JzPZj)C+{@9gg zhU+lxdF3GVyprXl;1d&;8tvJ1dsYrAsV*AIFe-jV250pGRP1!=gB!yX>m}%yb#Ljr z^&oPL3U5EQTaSi43md7zVXPU;HVEh0bd&wyI0HEU6;4TU!k!Q3Yzk++ewQta8zM}5 zZhgiG&TTy9ylKyEwPrmpDH$4VExMkg8YCxOi4Y2fOk6{w^15Tt{Mt^$wRVlUP(#gcEP-g zE8qYT*YPIM|9xG)M7e&k?j^2Ylt+Y#{R5opS@>WS11K`wV6!)VMK&!J&9_#}LIiDS zG`v#^XPrAu)jeS|@rEgphT(*)6*B~FaF?tVQ$!yO8YnrvPHKJy`v~;T`n?|ve($vp z6k0JG2Bs#qyICxulOg%bm`@a5^w>C{n?GmF`T$FDIU}^3(u*26U`Wc#YIDM+oIlZK zkSXvh$JLd@b6pPWh+%6!FES*-g$gm{GPHFr!{1VAvL`aso-4Z^CpTq8Ir%{E#P8* zZDgc?0m66ixDG!Mlz0FwRMRcHN#vaTDMAxJh!NUoYu>V1+z}2UjIYwkSY3Moq^#^W z+hsqzAW{Kj*-aUeUtV464Pwpeq|KtlOt_S++5E7Xh?!LSC5AExX1v()Ux2!OO)a4A zL$59f^f~lju={#S7H>$V+)Y_`chWttL^s`A-fxU~0dvn1H{Fk%&PCT_k>VbUu#}#h zTRu>po37qdw%nfe4!|?$tZF@FKz2G_py`BiZ9tf#CB@qp`(^^}drDp4O{Q=!Xx$_Ac=f;+VJl*RjIJ!K_Ye1)1N zs&O>EgEs!W093}d5bjkjXrIW-5hN+@f@#-P>#&oEI=pD_%j&wrsB2+GGvO(_1k(9$ zc2dcNL%rGpivS`Si^s+RW9`}v4 zlpF^B=j}V0?Y2D|yx->kkAU64Ng>1v0>Zd;g)w%6Vi@E9j-6D%5!(CH2oCpFKY5xqr8Ir$kqOd0)cH^Oo|3)S_pm0mVG$~fBVE$28L5tG z{)62q3^^fC-29Ta;67c_uHL6h7&73eMnn{F4h%**m5p?wW~8_6|C&13NN>xK{Jg{D zCqmA{l;i@z?xS^qC;~8#POw5$(M2)wpE_8CsMnth#H}sB>sONOq{)L9$Ir`<{0S`S7sv0Sjvw&5Hh8fnQF7oSP8W#>Tc?~%)n#d1A=(o@8yg;Q z>&IYKQMT;0wW|4B*L3y{bPR3rbMBu2yq`SU0hcp=L1crYtlRkC;s*g7MP@97wXqB0 zIJjhP=eZAr(}YK6oSD=3k%_Vd<|BPDL-I?%hf|EOIc%iMBI_2Xa+#*>M-^>9s%iUi zMca?ZvN1U4rGFi18->nNmf0=Xt3uXnDZ~UVb&-u(`q%1_#+la@-v<#o{{q6vXK*S~ z$TDpmZyTLu>zA-?FiY`70ee6G2hH66PXh&A|Np1%e`oFf^}iEbes^-OI1zM!7WYru z5_!y^=Wr_)qKb@B0I8OWO~8!3jBeY`e<;|t!oxN60KBYTU&Xc%*17Z2a9(0pD%Ni2 zN8kVyX?K0!cBqmQ5S5AjGHamxo+$*j-KpUtKoPBOh!rlB%2d<8BfEE z`H(#)U{7)#BqfK+Kwv!IYD$)FpUNfEZZ79{G~x|YCrc|feWqBBn|@Pg;pm!~i=hK=Cv;+)lTLfofm(~Xb~llvUbem4opjTQ++bRH_AumT%YWlHMe|aEU>=fk z7D~*KRsa}F2_w+7Q7^MT>IDvcRhQzTAFI4j+C)Noj-_P&xJ!LRD!;S%zta1N&2z=g zMQWwuQ1_gq<9%(&eIXNTnCi#o9*RG->`47@c-Bo1YY@Su>v>^EIm0H7m5BMF-NDcFHd)8;=#hzy*0Z_R;>*s8BeB!yblFdOO*);7F zB%69l7Ib-O&_7T#@@9ycb@%&y#`qNSl$2?V`hGuHlA^{a0T(OGOW*I8U}8ktK-bt` zqHIq|EkZ!EE>q2tXsnfrao>L@z=fH=#Cd@5c||3@67fgK{@+BDd%unmh`n0L zRgz$_YG$bcxFhczROrpYDZ!qXSAVE^u5mCMC5J&t#gXYrch&m!tNQ%E+dH>x>l*AE z?H}MhY2w#Q>4^a;aB=5qT5w{3V8())NMJZ>1_iD>?(c_lq0tnAi~~~Gle#JRfGbUf zSIu7*&3D0z5XUXS-CzZEr4l)g-F!pXAn1WlR@%(EK89{#m?p=%KH@<`w=i}#9+4fX zD(m`)hU+iF_2MaTj9CgiW~wTxQD((dlC|M@fxv***=D^eIFqKl+W~TYti2Z4pyn?l z#sP!v={ILcz5}ebXs|u~JK>wJzLjU%%aHt6S^NOBnfSL1$#2*hw3+yP*yh4CgcNY-^XW|IlO&~=977hh?@Yh9t?wPL(ze0-51`6K6WS}(7L zDB>2_$Hkw+g~>UW>eGPJs6Goke<(R@bhu||TYtwu$Ht!io`I3}j?s}b28Vh_wzT*4 z4v!#P^TU4xugy!a&r-~@z7tNI-VS}OcL1(D@=)xXb0M$Bg5Jn-f53u7el~8lh%=aj zP24B2pykKmQsO>gx=Q6IP!%c$ECK<>J+Y;L54NtohLmZU(Sk3Tx5Jhm(7A|xfvDD*btZ_c0upJhn?M{6l*9(O5BvCEs7 z^wN+fENpKoo%vvhqgKc)F%85gHFI%tIX6oOrc$XcFEurh=5sNaV&1 zzAqa~ED?Jf7xM`XZhyBs21fvJN-467!DRe+T*YLf6w>rSSWS)9)WCt|CtSR-uW?Py zN$o(@1*iMVA>H+5uLM;6a$Yfd?I$xNe-y;QAiZD9$_Ug`GPi4|JGQIS11#*fM1aUs z;s6o;caGfx+KesQPCFfh#EA9gau)N%4Kbp(Qu!9G6a2~v(1VHfsB>_zucu>R%{gqY zxUom#wB@QBO!Q2SMy1T}rM*b5LkgerEO%k-Sbd0y z3wQkloKJ`vaLU?-Z z1IRidu8U=jZadMKH3Da!)@XSRfx@@m23E3fg)~igbsJ>-`&28w;%rrPU$xFTwL6?t zj-^Zf6tImx_K9#Iw-u!E^9KQV+{X1b+SFq>t#vs<1S1u|ta(bLNKxgR@kzAo zm^>NdughMQ^#;ZTwNew z2mjroswzntSxOrD3bvk;A^C4`XU?D#>^m_3#K_IQQXXIcRY$9;xc(sM20$|*ShOOl zh}%K$vFh~rg{(RqKIp;^B5l{5F4}2)SZ7Fn-6eb)+U#>U0UuhC{%?Ofjw+QE6wTH# zGn};9I#|uR5!q@~ZURwW+}Ieh2Syt+`j>Hvi-)YJgl zSjTV!7LrVkr#HLV6~!-2MT0#m;3VM*1yu_gw5qyQ7u#%3jlMsJplD>)}WoNwfH& z+dm+p@ZctfpUXotMeGOSb=8^JK(?Xy0=}vJRlzrW51~kU?IZAb6dsSk<8gRA0gor) z@f1Av!s9pa0N~X=4c-HvhQFSH$FuNw4j#|Li__q*-@)UB49OpU6+2k4iM#(kTwJhP z_+M70PD(PE2w+X@erg8aiIXLbQvl3X(7=PHfRL@AQFIk~!YjQN!t!Jy24m1*XAanC zkzy#}Y{N(kU}dTQJ|UDWgzWSSlGu9R^#N$5BAT zIeiAEFKk|1Cff~ z#CZq}(>y&SO_v-k=P`@1LKVKYp{L|evD?+l7;7^ zszXM%3Hmiuf2oikc|(_za?=SXE4tSghD_AQ`Z@>)^Nz!fc@OBWRTnbR$_Q#ie7oZa zO6DgV>T*vEL2nW@60P_H!XbbaS1LEjFx8n)=9#hNR9mmGTlHw$%T_=0s zC;69(Ns3&Y&y+z7?n|73(?-4CaYTmX>x+va0*+F|_$!*J@<(7Z8zA8m5T?nn`MZix zT`2|~s}8d2peT*8>=#4m#yT78R$9o9s@Si3bZ`>#cO6*=nutB90m8(kh|eIi*IO4u zCHc#OH*aMM4S3TE&MG|fYU`t6o7LBY=j1;JZB}0wzFF@S6zg2SjlH4dux^LCBgqMO zQ*vyVn=Lm#{vF>m=KpMdd^tx7`SBaKuIcU==^5$m?^$yWD!>#8^6!A%K0pcbacr9) z-!fyOKG!m1nCYhKG32Tg;VF#ov@t#`6>(IlC8!ltK#VpsK8e;gCxXhD&tuw@h(?CI zjEn>~e3aAm0rG4rOps5>%A&gEkgAgVn{R#?87o|HVeXKEMN`r#bx}$<)Y!!z;OOTvTs6I_HgW%3kvb1;=NjH@+X3s!9 zSIdG(xJy#O0s#u9dNO2f&%Op{9635a*^nXm6F!cw_()MDUMYo=s{b|c#18C`CC&AO zkH@OZ*j!n}RAuH`dt)$HF$JD6Tu*qvVy<%4UH}u=h7}k9!_wyPyBi#$3}FjyVwXFz zZ>ofL2&cg-W!tT9_OE3%6UwTKXGh74Fy&<2Ctw`b*K}V5<*632G7JDA@ruOt40-VU zo)!90#vNFLu{9W5gRy0jEt4#er6SKo5$hUrvQ}ehsIjEv@Ub92e>?n@a?fvf6G;l` z;=Qy>y$L5h4Ho4^b5UFMlhaG$Ggn2U4u!2=1#yI{J|p7^R$q`I`PD3}j&oztqtN;# zY#T7qQB(QqzlTm(6kdeGS$!S6V%a0g@Bh2d31g&-`WHF0V9nu54@2hcF#IiN&N>RK zO9ee3ccE%V$^0BEyU^`;;dmn8RGiDI&*=0TII-2whCQ2l>lra**lXPUz+2DfFylVK zDp4%#8N_`A1yBnq}cG7_-GDOTZ(bgP$EY7v4Bq-R z%nVWr!>unmfcIUf)>hh_i+mQu=0KBXA`lrvqs#-58Ajt5)A&djOG=6(Vda^^;taMb zE>FKwyt6FHvGjSPqjou3qT?i=FbWg(J86p$y5d;q^PjQRA2~ zENbENlW>VQKMaD<>I-lb@T>sq!H_%YWoa@!-Z@37moD_Iy%eHsq_NV%)b702SfqkT z>5G4l8yM{NT%z6nH$5YIM9e{XMSp9dFd#|w!F0ErKOb5)L5eOX1?^r!eFx1 zP|-H!p3efGfY)`iJnQVp^rV|1`SdOWruV03$58wrJ8fYw*QqT3DreE6xrUZ*M<4`J zLt*Qs2}8Iu3z50KS7^<%Lt-cR2taydS01>ic1^BoIOZ^9gq z_^t{R;HU3|dV&vx8!o(3rO(4=3+rXgR9+iww1>iGB0s2NtQI_icv_(`+|QmB+7#?L z&GQME&bjeqm~-RFxL7Idqwa{tDps4YSB%-R$>9plq%oRa7hXf*(ic&G@wgjztq3Ph z?*aC(6gl+G44p>!B)|J z>wI4TDpMRh`<(9!DMyCn`ykh3-x3rK;IBqRo$w|-%*6)eh}j!TmIbcvAY>G(*4KiI zkWRIJ*MgF$Osg(w#nvClD8XGY=`!nG+_g}S+XuIDsX*(?jS~>u8%(`&GzqdQokMHw z(+E8&bB#-wQU3*naR>*0^V#9vio&H5*Xf-nGzrGQC5R;$(*ozXwc-2(2JkqADjAn$ z^J(}5jVVuUK8>PNWbz!`soesqD0?yL*2e)de<3FI+1d- zl&su7IgxJP$$qxKJDGLbleyfK+n!1q>9Ftmsxfy7jvJ@V#|d#AM$zFh(P02kPJ;qB zaz}!@zD~))WcoZOo9KnLyu+QY)TnoTJGSl*W`l>Jo4hGHBV*sJ8ympFeEm6qg`0cY zKPW&3hv(V|n1r^=u7wX+sujV%06T>3Say?~hhOH`8Gtqm5Q!|nL8Rp7E}X?3_yIH! z##gbfRw-QoDa@W}E0zG!hLg$QF{|SG<8RQin;@Zcb*VRqHLH_0Q)mlWGltRyq=4Nh zd2GLO25iq=Un^9uH*U&$V{R^oMOQK;Kk^0G!!RE~6_HKy?nRsm34&|Qm2e6usq5$( z>D}A|E%CpqD5>x092^?y!MdgRf7O)C?HcUg)Ymi8!_*GNR#?ayaQ70NfE2;r4T_z+ zo24^shF2_HMc#IqrY(zOm$zM^Xe;970HKC6T#P7rG5(gKWSn=+e}oMRdWfsSx=`Fh ztivh+3U(R5IK~gow{VnFhgGqPZ-=W8xeon7^(Qawx#kv#$&&grs%{Q8n-L_a!ZR3!Kt9>lkC(+|S z=pU}+b&M-VTB`72vy?)Fniak062h+CY!$una(u8*WL?smrtY|(R=CSc?{>4)%|iBy zeJ0dzZ+S@4M?5gh?Hna&b!>M-t?vaaey$9TU4aYA?fHsl0jRzmUQV`Q&P~4#@t%lt zt9nDZ4Z*MPKViy19uu za9clKMR?N;mGtVygE!4{*&9lZ?sljXV$n@mZ+9}`W{(({N~JJwd-%!}!QQj3k_ff| zWsHV+lyVP5md*%*#hzyb4O(Pnk<~$ttSDL1>3O@7>G7agSkG=ZP2rxuFaj%z_3z1RFp&_lMM<5D6F^KORr}xb0elyyg}#2QS32QZa7;M%&Z2QMB!ADPl+1ymXZTXu`ksHxko<|vV^*BC-@0Kt+dhcE zQ*`oAu$NMOJxrmNCTU9594fWOHCI|%<{{l+s#wb~+U)d2sKX%T%j{zq-*UOYFp8HN zZ*b+UgW?c?H~!Y%S@9q$g=u?dMNl2QMxlZ`TTjW-4at+D1uI|O!@jTG(l}=-fM3BsxA$ z$&h?^BUj^UwG8(HJcV#4;V`}VuW(c;lZnl`mxt35F`5$jGfR-d^USIc#67TP}C*}x#BniDaj6WZ+fQGlx6pf&Qs&e30;o8V9qn5 z04=xY@oRyFQF;1VylC-ayhf0nj#+L8f&`gKC)Y7Xr<_zrB9V1-ImnplP-Z6oCkU$H zF5VKwB!~$&XwajeJI#=ME*;OC`Sv~&l&`!3ONKb6&N-FN9sX|~Glc@q;M3vFN`f&#-y z4a>6=usio5;e$r7 zKg6}Aq_$_%VAmPgv$XkrUsN;~MQ|~VTU>a}+!1$T(#tw24P-=!7AsJ3vT;K!3Wn$y zgWzSocMwg@1Dw4K2i&| zS3b{RC6qLE?aX><&-7r&Y@csKgaN@`ci;cORr(><+3@ieaS)H;$de!gR#nNqofm#9 zX!xZ{X+#P$qLePT=ledbxqi>iItF0g-)|iuW(+MZL z%}Tx&-y`0R^hAn%GbDe%c~Vx;V~n$UYn+sdISYVy82{VY;qV1~W1L!R9MZ~e ze-ax;d>8I-qGWymlimb=!eem11;L1+OSUj*fZqYCYrtFk!}5v0 z77|?DkF$_k9;|Ogmc{H@H^ZW9bkMm5;|-Q_Td%(aSNAUzI7qNGv_d#s8x+sO?2WDW z<7(?EncMA+O-;CInj!g3ZKjk)6LWI^E{#+q$cvOL*nxK0&2BcA^b{u4`;idJ5jLd! z=>AfKGzeI_`%Cf2K1E5>n3tw*n)aqUot%5pU&eQI|FohbQNjxb$F6{)HDWLZ3nh^r zGhD>|ENvt-5U-@tPY!)p?oZ)JF+EdKzgvKBrMu_QuWZj&W(dy_96M_!J{Zizo7zO= zO-VDPB}|SDIfM@tVGhw5J|I?iE>m5 z32|$r+09fH-7Y_5ru4(u^Ngs1nE8*#4j9uTG%Tvh;<27@3Q40VS*j@=Hi`QLv*8(9 zHElhD5c&bau=NO}H=Z3KC7tg7Z0-#J;bpI+^mEM7QJl zNXSoBi&qCRTzLBg3i7j$X^>E%aMgM@cEUw7p{v%r;Q;c=%i^p1LHGBtqV2=bR;p8L zg<3DIEUCAAT&M`s`iyLKE2~8*izCjz5V8gyhvZaIM(t-GhuR~b4f{96T~$}$2~;R_ zqdl9VOdR3_`J;K2(co2=l)Nlf+*^f`aktyv74~epEMHVpEvxM|SXLV=_AaFd zGdTFlx0?;lG@zh?G+lWcD?F)MdG%LuLs>0x#mf2MrstHwbS8Rc04t?uQ-G~xCgw^2 z?7iVR71c~}Jws|ugLA5xAC!G$H?-}8IJ{y*`TR_QV=%wc2d^M-G^f23;QaGUY@P;w zFh6#(^+@nQ&5zybQs!5|!{y^i?aAiAso>x~h0qPYlHa(B53U8fFn9&8l>yEnJAjBB zp!peG`_kuE!Ob(c)4+oZ1h zZsYQ|Y0qu7W<9gAY^At7w6*AZwt6-3I#`#7S?}_I7==??0T-@p0G-2d$tcIKi1r7# zYA0L>b_4G3wtU1rpLS&Zgh`##U0#|x$uySEsD*m7x||>nJZY@Bvtjkco+4mAflP%G zKM&Y0MR5HCPaU}6dK}vZ*W2KFQx3w^4dsy#xe0i$iWO3p;zZ_+@V{X*;|ZZbPsNn7 zp7)j9bJb%ymd1Keh`SqQ@Pv(5ZBMkB@y6TO1`$-o&KX=D5jTk0H$icKb;`KY}>27z2GnJy4aHue;ay>YB>NukZy^=Vi zR%UyVn-*{5Oj|^A^C0kZt5}j-Y1>t&!v|e5Ks-1pH%r#N#Qiz69-ugZdgdw{nVZTJ zL(%MPmeZG?D&bgQvp0T4wwj_7BQ#?u*ZOV-0bYhKsnRkbDqSIi^F87Ah?h1_--1=* z3@7ySGJ95?L^fy3c_3(|mkuFh)B41?d>Wr|%Xx^PI(Rvc`Wm3wRbRvlS5L{ZZf|OP z${q5i(urhxTujS41hFkrMk5N!A2a2vT*FX(8jdCRzM^D_kX~_PHtAP(&~PuyQ5Cm} z5CQ?!4X5G=oC6V+@vzn9#mZD)&BI-^u`)%~9vV)KjeB|U_b_S374b<&fodE)-_Qm7 zB=tFK=!KD(){c)P@Foqz@BuSsMHr}tF?hv%W#w&mY1(>`ZHcb1j```xj}3Vv^iEL| z)!@MjrJiwYmb)V(i7VU<{PrUJK)S;BDB8X!9CMU?Dlh?GpP%-X>nzk1y+Fqn- z%e>v>bG`&%epxK68kzY<+P0BE#;BV3wnxU#x$#K#oEwi(v^_@C_DzbmZ&I`s#S`B{ z0piB)gvZnH_%jz&TG4;96-SbCF?i+6E(*GUF^CoInN?lZ_xu1ZDsppFmVR97!g^UV zRa72>&_iJ}5m~6Xcjk(zs>Hm1J*&8PM6Zp-vxA#(a{OVi0wEzq5pJp@#QPYb&<{|iQxNcLlX$8Up zP#wGiVZ(_a5H|E8qy6A>8o`T4!c4;I~AM9aT{pSKy9ze&(n$^RsGeJH2d@P7ir0x7$s*)Me@3eC{Jd@{6y;9>;j zbrokS<|9+VDmrk)Byt5HZY};C&M9Cj1d$D-pVOw`c^2ffq~zGq;hv#w{T%}x8+-bD z21eRDMn}#V9O@m}(%v~ZI?%msXt1xReRQC+cc7c`M;Diw2jG)<5=u~HSmjHeFohrJ z-o-sua(=8%H!}wEBO=f)rZ8fuBqCb1tevoU=-oqD3$d z0rz$hFJvXsEj_htx*ai-lv)1}VO|Oa zp4UPm?E>dOL^dUv#S|&DA395kIkf>451nOGXp_8}NEn6(*c9366+G6wbd~Qy!uUa9zkt$t_^PXBm?J<>8df zA9rbQVnfnRu>z%~=$uy`2EC{P6)Z*(;cYR>tWOFC7viM$Ld|f?rmQ#S=5oF19bTWa z-A!@FybQ^Yd?5}eh?-f{fvDZ_etGVU;tf&MfY~VA@el*SHziotS9NacA87CB?(ZFF z-!wGX)iXT2t#@E}q+_6~r+uiWgPGKS>10TL4y*1_3Z^>tPE-^sxGIaOET+nbejuVO zfF}p#?pfzLJn{t*Q-O~V#NSkZ6fqL~Jf3kllpHdebF=+U+8KAD=x)H!G<_oud5LVs z=Vuf#i6a3nU3+E70f{(Etz*I_ai8#P!j{*u!3Q?@fT<#p*J=7j1cO|#EJN}hctxZ1 zbOH0~2i&qg36HCTH|xg(+_Iv}o0#;{ZknE*q&r#B*e)+MH39xTW*Ejiw<%V9jb`vF z;7mps|RFCp!xkBfK`fU-wgiyo8=PeokOaHNwdg0li6oeU+_eQP|7W9|rxE8Y^`OLwU(f3W&A|q9uz?D%AIs9c#C?MD zE3^B>eF8PgeC{&tled7^(Ngcoo=6S(-25!mUEyRQAZGv7gfYQ{Gc(tnNP{QoldUb zrP<^dc3J`9_~A!jA=3Pj5C4La`D0T#>P_@{4zs565k*xb5IRjhM@pK)xvyVOvr{g& zs%W$mlBP%$K_3x6^LcFM-A*(SWyup?#9Z-qKP--?~@#D7GNT`kh{TKr!)1S^CCf`V-s<(~sZ@&hqdh=|{gjsIHC(j@suTagoeCnFE<6QA zi8aNNm@|E~)=D7kjE`sCafc?oG*eqf;jLM)A{!{+lzBPo(B#-?mc=*n(_c34{Hs+; zRB-4dvsZ&QcC(XBLahZ|+A8hQTokTiy?@I9DgEjw?qMU_>m`33xj`jkqb6b8QqgF% zDa?4uUjyu7>&jH8({}Qj~SBx2+Oq?+fC!ROV22v)RDQWVzg~` z9-E!VX6Ny*!7H-s=VL4B^~2j^v-9{Sgs2EFQrI}P1J5C*&)8v|iD$Vp@xwm{b9hiO zB17^WC&L4{95jb_uv1h|$)UqEn@o=*%`7=5#jmc_NWr4mEJTZQwWOGnVgZu+1&BJN zNa9!jJySU;%I=vNvK0P&*z=5JyC}P7?VO|NM`U)@=m+;M?h~6+Im%9=AA?QnQ;3ZZ zPTaVXNtd`NIaPyuN>`0}sEQ?^r}EZHfa!Vg}j#F;IDRX;3c3BJBL?(%>* zatf>P8}~^``~~R%E`w!<446eq7DJMN@}%ouf9X|~u7CYsGbLS@-7`w6Cn_A3u;&?( zuFLKD#6~y;Dvf}Zt_w&a%D`43Im;E2MbdTCJs>nb5lGiftbhg6sHFrC(DAdkTFwL)l)+&SYcNM(N3&A7gJb9(ES@Pok4DymdrDQDfx@r|fIfLGA} zI#!-BzW-7R?N}|!*@bCrbUP!a3J;0WK z4#5VL-}29d%>LYij}S2EpLGM?9LR&QA>}!=JiWprU)C_UB8$2IR{KZ3GE;hma(iZ_ zLA!q$kEpTd8PO}0+jI9X;kK*FnOeMP@!~<3IjB&tK*_3}M3RCYU@+~Dc>PX#8dD1L zOlOp|VF^;E3P68m_}ojo)SGb9)2LiP#DH!IA*Uj;$!KFxCqa8er$C6ou>nIAjw=_F zqq9*YK?Ah$D8z9HqO=&Ppk&6>!I~@|5l%I(7to+H^ZVH>XogE@<*ebIOcxA#4zYRM z=qR_K68W9YIL-YWJsEC`>F9Hg2l&rn`K$JGbWXL69kSG$1N%4dPU!@LbBJDq@L-0L zk^paW@H6wI085o!fC+~-2Y-0S0=NmnA#+_+m^&E|_l13!-qWhb;Hc|+wvO%c0sz5Y zX@D5zQBAjp6~|U>kClTD3OV>ul!FDw_Rc#qBtQ2RWZN<%-+2dK{d!844=2;(DYt_M zMM7b;VHdKBZNn^LGB!^*$B+IiC%D0XW9NZWCbt3AW=MYGU+`tTokbJv3M)7oxi!D1 zLjE(D0VPYM3p1YUoD9it_`6EYb;IAmyrp4?kNz7#B^r7xvM$I+o20nI*}~TvTNQj) zy&h{M{0l7ea`+9_s^!ZVWaC46*=)ZSflB~&SjpF*Gfr9jg~0N8Iy&s7C@@&Wa>i?h zF%=QHkN%senhEBK(+4JP9{K>!!{40k3_c4d&E3t!eNmEN>*FsnB(`*K@#%gJPhFh7 z8gI)1^6}qREo2Fe7|S1pjGz;Lj35BKphCFG^3uJ+zB6~ff8#`CBS>t>5(-Ey{tMNQ25LELDBjx z@)LJkjj+v_a_fRM%U!SvkRP~Ht>03Z2>EQhYW0+~ZF0tw>G437D!5bmDf!l3033vd ze}3!~W1bYas8*d1)z%-#P{CuTnxK(YUGlaf8u2d_C@kO087XZwPMmM66#8o*yMC()xBVAU+~HiB;CG1_(Jq$R^5&QA1j$h~x=N zZWm#h33IUKh+G5}N;U>!+w7}6v-Sdz2#-DtF%B?ApLifc@_qA=zk#3khi_K>zYNK* zW(H#5IX)AWG+Y+G`RX|tlCRwpy!q-@_J)$SfVm3o)Wgnhx8F;+sUhz? zFd4>{=quVdb*9S4exzZ;OfAt(s8VXe74Tyu2yBntMlprfkar#w&zNFa$0FzO>R)L( z$hndZ#5JoZ%+`E8q;yN*%tUihHV-P#g z@_B?`ehlF|;V-HIMRLW9h?O{$8L1{m2-MS|d$YU>_9 zE<^Iy>(wq7Z7 zfa^&O|371jFO5Vl;OW?m`n~pnLdL0OFgre)PSP%KV!PMro$s?tzT3fKlS+V39Is)RV)Wgdc(-(N z;;qd|{RG4q3FiMmW&#z3LW9hjF%K@#?25-hiNn$1P}_6MNGQaKY?-=eY{EYgrvxXo z<*)Dqsb3$H5HTK1J3%WUiigBXh_hZo#A_o}VzzX`y>j;dt_D~qdJkKYfQVR5LSL2u z1@`KP!GQVCfdYFqOA!TcrtXG3TW!Icsh{H9;LW+;&5*paIe2q!n2KOox0`aQTXyNz zCoa+;Y_8J=Ke1|-hnvftQ9NZXMBW0R;4z&65HlqI#0M#vm%w!uSE3WY`v?HCsQN1a z3Gv_)AC$|73$NlNWS)1WUkzZrJU z^*`eM2FB~if5net7_WKZoXeX>fHy+)68r}xM|s)t_S_`YhuM*JCfxJ9?5_4PFHPO^ zX*;h9H#x~0>yg=yDXE`u=-5ubDjjgYMm(wnQhch5LMU{x`BfMgu+cxCWSz$0+!K^D zT++eH=(&lJ=}EWWrB1@3y0E>NvlFaavS)4bJk?yFg!pW9#7mZ#DxK~yA%Q(mMlQ@4?m~zroo$9U>fVjgEzG| zg>ROxfI!pc;LY-7>TKpD2izP2luGL^N&K-mOr}ld6j&sLi zI06t8O;8xL79wbCZ-n0vL0fwh!#1d^QrnOyISed2faX@MU%v{9P{ZHtom;kb4fc)p z5AdF}W*GCH7?=Vg$)SSgm@FmDTh|Pa4D}9dTyxx-o`KQ+HRs@ouDu>sD2;P_@>tmF zsR%#=+>7tvQH+J*f1d=Hu~=EY86urC03`JDf-$h*>lfLYz~Qv+C7igRTteJm_oOJ1 z1d9nj)f%f1DD^C`ID!FuC~^!C^d7*Yp4E1XG*j8Qm_dT?j)+s@$Z#piO4;p&35i>y z>{*{uNAD!TmSuCWhQ}^ADO`9p1)_}=K_E&moi$d42MZ`Iiucx7MTo%4N&PNutVonZ z<>3I;UJG1e-II9XAj3@8PIqiqr*}T4VeOm-$dIsdE|hp zSSQN^6$VdOPiHh3@MuuW16dwOI1{B9e2nEO>#!q&3T5|$GG3PPK+RufJWz(@Pu&HN zzY4Tor!sRYa!0-oPr2ODQ{5$TN6j@jC$4M}lN=jpzFuG45%3eupzxEcuAb^SaBL2a zZP^^_mn>pTtLj0$q)js%#6hF4;9aPfDZxR-vNj}ylPm@sn5GjhL+eoR z=7dXG8%i3XTJT76!X2f_REFeFip>Hd+=Qpf^gs!^z`+3wi&3y#jK8G{<)?0^Wbv4n z-tA`ThzIk`QD=g)X{JV$`#z0h#1RF=4LblgT*=h6v6E@0Stp&_;bkXAykQECD&b;G z=i-+aj-3m3xTuN{UJE1u93}H%zczT;2}kE}vK;+fR}n&%Q8KS*sAJoP-kv^|x`p$s zLC+bIf9khzJXqGA$Qga=2}FF5K_VKK;kB0uifsr$`oxGszWPW$YNRPIUmy~@h zK4WlnXxre1ZQUJPPSEy+$-ZL&Blh(dy1w=j<-8jEdk04KtJ@1Xwc}^hINZ}UIMA(~ z%UoqI&HcT7eZ7WVHLAPn?$`p*KD(#q9oktfGV03YH10iA*;R`;tKNZaMu&4RlE3)F zfJ+?QU^c&%%K04<^kp`&Rm#p9I{LS5>emAQ2z4iLZM64g@6q~B^cMw^gv7&n;Ye?P z&$|W(w1{9YTIXZ;YtDwzzCOgbQk=N=FBP-Mki2(td|U5iMO#Yh`g^*2NBiU3?_H;C zUpsup;1G+tkxw0*XyO(Q+yG0!B5hl{SJ75!lL+VuCG+0x>~`A0bCZ$lIEq$hM9pIS z5`CHru}|Q3Q}Z>>TLd%7ko?{=n70)&{|eRZQ?~;dWL5fr0*YL39Jz+$bz-BwXG)eP zfYtK)yfG)mxvnuh040uwZ3;cO#JK{Bs$qp=0{0{le&j9Sw4IBu8xImHh2b*m1;p$8wrY0;dVbB?PLt)2dTR zHdWx9yvs|wkhKnFg#Cw`$yQZhNRAfph|J(FEf{y{fOj51XjHh%!TAf<%XxWm`}7yJ zzBiqtPFlz8bMHeupR9Vi^qSoV#ntv+9-gLPrue@`*IUt6d%a`Yir1{@dgC?Q-`mv8 z_lZfn9PbuD0O1mQCl^OhxVYuwzN)SzBNo0u8avXWQ0N`bAhifL%ygXlJ`H=?cT)U{ zqW(#y0<6ug80Zv{w`6R^4jr6-8}6WR;EK2rad)kvEy9DD0z{=~JESdFOCV^ve7*lq8ll+-z60Oqha zaWN{~dB}~(Xe;j8-bXVezlZ72qQ^(mGtQ=vsScJ+$&yW3Z_Lf*+=K|z83867F$Hgk z@H@{5~3+Aa@LS4d}+MX(ti7OZZ02}-V%yt4EKW4y??zyEj1@N+AzXwB(zP*nK zSGk^&LqJIAIe*g2Ql|2t=(sy%67&0;&hk)=k63}`?BmG00daH#Vhibg{Y@9N_;bnl z+2@56Dwh51S%DWVj>=iaZHBf&jv}^FXaF~Z^b(dZyMeK zj}wuBg}-{kHwk#1_`l#yg88+9M_p%fyxSd1PB2{8`w5hRvb8&{`7yQ0lw532U<@S8Vvud7fK8J95kP6taaLvJg1Pb^Ghwjv| zXSlkiUx$5|vg1Cw*TJofo_}*C9G@$m#VJWiltuU9R>SsMmhxa=DVz3*=$?|rL7+cW zOziSfQ4>TrYYLAp{oU;GBw)HKIL4) zi6E{0%~?pV>nT~;F-5&GZ($XipJsWyi=&V#9_B6)# zNcEjh{{^vpS&3-yoiu0?%*CUT$IcoKC7=g>7?8-!GC=rt`w~k zHCMvf3uBS+XB8!NU89{ty%?#A|5Z&%ZFkR5=N1?Y|EGqMy6(}gcXW4#|22n_xf^dt^U@n-du)b(y0=pE?^dzwp0eSgPLZ-?;NJW6W&w+x?! zp<>wAd`jkS8XO+kIMjn$fBeq|O6rEs>Jxiwq@)(I01t-!FMwFu(TyFQTSj`i{mM^4 zs0}x|z^&1SXg&Q7=ryWAei|(OPcyNDpL&t+0GX_Xd5ji&sDjwgf<6E&FLO&RC3D`= ze!^SOLhv-0R8-?CY#>jA4Mf#;6qm#292_NRHmYfRwxaFXnznedV#eK~X}eW1?p94( z7AeKoyWe|s65At)wNk-(n_|w}G;LY&AUqZM)z-L zd?*r30i%_aAa3xzKg*v;uQ0QgOHT*CLo#5o#-WB$5ieWVJIgqWk+hCS$+p+Igd+?QSHya$) zLCC|JuDtCwTu>Zhhn4$Ok`={Kteg)nUeCCmfn+e4&P2})V5RhI3b2)LuNc5s$~j|+ zL$61I-O|ht*sJDMc$yTvC%Z>{ex|@NxJRWAZpwQa46Zrtr2yxjLnKqd`DvB_^J6Dl zCE~KpJ5cjuce<4MRq$~6cv5?^IdCdCxKAN;gRkT$wBmzn!7dD5!DDNHb68%;12jK_ zYhU{OD!6$DcN#dWl}Cp-N8ovUoWW0(@QyV*PS#8%4zgyvM^k!U^$j2_s!d)AYVnn4 zh7&UFdF3GVyplQo^N9&djrMH1JuA_q5X+{Z#sVeV85x`vMUUf=${XAmrl>5{FYDgY zck4meEmeYOwp)*eJqsJDKR&FI6Yx!@o9t^P4B-4%I3>jidp?}ADV(dWFuN5ztk$&W z)@O|1+{UenraiaSn)SS-WN5Ut=z6wlBJnyfXxQrZ;PQqiXZD4lD^N}YNXg6=TuRId zqgXY60Dzr&D_B!n@5fQVspOqY3fxWJ$=oHN;Bj9vy$cOX!)|tWa?JI$Q+_UV>;U~- z!b>lp?PqowYp1FxX-ow}bvx0pJF!!k`X~QGI$lbyFG{*xU$h+cMa!|d6s11{$=Z`# z*KJBqeA9`Fo-nMhqJcR0o0-AAq|L=tX=|U>EsLG2QhH`{R`tB@sSL@#@hh?oQ7zR5 z6cwuQZ9oy;OdC*S1B!TIU*Sxsa7mOsG-YXRKv4mxOwDGqFQBNt2Dpm1G53;sN|p}0 z;9J=_MX8q_njG_)pA5-oAB!`~iH8m$*@7f7a03)Qdw>Uf=8vT?M~CEu3Hh_Z?xi-h zXTg=`dg-fYUKV+z;C_X~dnuxyrTCk(N71EKF>Ouk(q4w)xn@fAUW((7z?5<9oj7jX zC#d>Rd$NEw+}C2o_41Ys$q!sB6*$XU=37J9RdAWjZ13XMuz$-8HXZbG5VuwJ)o=+S z1mXrq#|}eo<)*M_V>X(3-oy=#XTUIihu!8l%{Y|b_a3PHJC6MlcJa?z9xJw7hB?bo< z46@>(jl=)O{zAwbDncfrgNr9qJ$R`-S8!RTZYb7Q(ARicv z@m^iO9qXfXH4J<=*TKMkr!ofKAjRxu8* zuG3o70nC(5v94u!iKR-9vSDgn%LFpv`wv>zGNcREwX8VTgtd3FD0)=DJcsxwP^m;s zX-tb}^9@C`cpXKY7#y=1b}eiBZ_%}klDR#*-8Ai{9wkd5L!*~=)3kleNxA8SlWk8> z%!@8_Bom1>9sAA-#siR4na&z%xKlc(SCch^;GSGhEj%13uS;(x=?NCLg zlILFG8M;A5=<9EAVemjlwdWpJ8ljs|LEnUPk@6rgqj@=(j_^gnSmKFMi6KkB2fO^- zo8!D8m;T-uYydeh++n}Un+D(Y2$e)-xN z>6s#Y5Q~gVPtL^bt+7o+eheDcxqKEomm|VJW1DY-1{d(5M=~Tod?w&%$dESl3%t$n zh8znIa6890ey}~f`DTBHGZutMx-m!7xP|wDWk>0@pZpG9TwkfGo zfai5kZT``#<5&6p{axh|>QxSpbd2y0MW}N^sNEYrYT209X{&P#yG?}YT9!GB|4K}O?3$Fj?rwv_XuBH0EY zmRCmdgi8gEiLv4VUs5=JU6zvhTh|OjM&^xc&f%?$Iqu7WQ;}Dj{9TpE*AzelIFx0` z(kzQ-8GZ*{*UZBYph3_BACMnD;oaqj%v9B5?758Uz52SqmOHZCk>!s3Yw(Kf##`=4 z#Bq8a#&SmmX(p_hu~0P{XJ!QAdf6+$9esEOUc-7yn!&;`lALh;MBQ!{G>vH!Zs%|o=A2yzu3IONAO*7Ki@dOnnA4ilDos6wv8r5-Ac zM>^z2gqu{ZW6h400aoAa_^_EVU~h!wYkM|CDFSHNIv7cah_xyb#G0)S*CF(H=xI8r zogr(c9}UYp;UrC=cIYy*LsNPtEVdu2D`ZKjcql5Y$`lWPDG9J#ca+>JXyOVFXyT#o z$D0b(kvC<%F*lbxBblRKb{dM@6{Ixz%)8iNL38g5>mXSki;e`eE6z(rU=7ln%sUK`o+9UfMNKn^ngmK{xqO)c=Kyi} zpLth=%kRb_j(Y+wzq^s)x(vy`@7fFrvQxs(udz3j9Ma|c92X|C^gF??V!e=Fc)td* zaa#z?;Y`M}b6bpXuCT1jdznTg!n3{bfegu?z|b~tD`FSGXe*cvO^(r4yi7?=!tpo) zG&aAS@P2L$DVi81O$mp(=!MCuP9ebfETh(@5@)G3Ej4ak)7>%BGt%4NQ;nxJEhVyoBS|G^^MuUx0ieajTRo3a7rwW%L!uh_Kr#6(#Y`HnH+`kz3=B8sBW{ zJGe|}CW2JOLNLDrRe&WXpvjKCWPhVT^;J*GQZhjb7jTzHbLfaxRx-UAk zWSIIrD>SRtrfO}f)~0H0suIzI8%G5mPlctT@>^+`U*EG0+$c2H&N`2?+C3l(Et-pT z4y29g9~4MD)6AR)*4Ck^G)+#pect%+)Wn37oz4)2vPU?;`}#HVjwl>Tt*up6oQXOF znW#f>!cuN%-vA{|<1X#<#=$t8qs~O}_!*Kvk%@WnedJ>LFui0aHtKZFFxB~Ns(r~c zk46)Kr_$bFb2iI@=B5*5p?E4Rux|iJm6>%?m^3zP`FzMc39nQY6R}y3-1MhVVgVTH z$02@GsL(79scVa|pF-OT!>?x~1Vn{7Rb@|VkF#0`h-BY&#e@WV3!JE92wBiYhz7JC zL;Jp&A^CNsd&AZ>or8mY zJsksU&Oz;Q!>O@))qQ`4Nq0piT|`Dr1F;*r0Hn+xFQQ>>=!KD(0|*CCfV=S>JXkWb zXxlM(wJS19vF$ER+h~ol=n6Fv)X+O+utc{rY3dd>%iW4u?&e{&(iOf((e^#@kVWV) zCo?%@^P0AdXv^DPsA+qVV$K(7+A__zeB4U_=9gjTGFUaTO#afgjgUsWu_nGPJI?a9 zN2=%Ccuf3y8;{YneUqZ?n-pzDvE4V`0UvTFJivu=!Jj$v(~1IoD~=@P74XV0_LKsaaN>Z{5pN|CW4v^y)HpSof9ObJb%yO(E;q zMxe<9?FDSB(q=}5P*b#Nsx!0Jl38voX*dzAB@MlJ!J)9dT?BOr~`y@=8XD&Fc|iekh`z;|^|ifm&rA}%tpij0-1QO5@5MD*b*D_8Bcz=+g6iNq2#%SQs3 zkAei6m^<@G=C}wfN}o68q=HEKE-$^?&9X@OrhNu1%8T#NuqZJmFaHE&NWSTIPSO{k z>W7hDsruo?zVZ|_`b;)u_q+*MjlHa>U;LbBB>N7|xs0Coo`d3~!tEg{35ncbv5JP( zBVw7#@WjP^0$zWzts;tTm$78<(zeS$(q6{$CxbZ0DGx*4%Wi`F%MarQN;_zM7&cI9 zFgy1KrG%=@x$xqrVQzQe*ilhak#hl?IcJ5$*h za?i{pp@Ig^**UZ1o@1aP0uz{~+FxPM#Sw7x;U%OouYD9AkHG`$bvyxop;F~3_-ijb zeglu+!UN1*EpyRDSLO#AO*)k=8P3SaZWH zHaFm%k;VAqm(Nh7)ya8IrmCnywAM~#|HMg z?q4JC(lj6rsjK6kg9>hdPGd!63-g)#n% zO&I={PSP;^TD?h2X9;?fmre!{@Hkyz-;3ym@Xlh@VrW>bdQf837Ra>T^f5#OCE+>D z(W$y**mDc_8q5o^O5PLNgMD~WZDPB6eMynZpAfA7I=IQWH+cdICLvKAXUr|Sf2}XKE3hy z?UNJ7JCn)dcfa}gNtPz-_zV0$deb@Tq{rOe#NR;cAHm}`KE)&6jz=$;V!>u+NdBcu z%A+U2mW1b8u7VfOBnZW20jz%OnvFdpYf6P$)A7!3Cz*m`klUz}14rp1=#-Fn>kv%5 zH9Fig)IQQN{ElsXy~86YWxsSO^voUO#OoA)$%gJN*cX1#fD>Uy;{HIeANm=LfKH&* z>#KrG2m;Qrcfuz6RnRzBCr;tj27BxA0PN#0fTwUakDqkL;VK4OfQRo=O6J0Mo1AeT zq$-}7nTH?l!b}bWOeEW;Vdmvt;cc3`b@f z#4N$aEek#zadNvl(uo28>kuQ%L8IK983!=C2Qxkl+s7Fn2C9n{>29L;d3YPnBS7jL zc>t9vLKJU71~{9e z>tR;bF`g@lLcCJwddANWM>i^=-3n+S2Lsmvt*KT(o5cbeZ1a1bj@W6Zz+l3&uunaQ zx3iv-w!yT^q9s8^<7RpEBouefkbD}rNvS{)Fvb~@|HH8w-ntNPSAPPB=eESCY_k6m zlzL}eax_P`dS~2k{s2*G^(TN+Ws(!1R1pTpiIz?us{#Pe(uocQoq+dF$w5$mfM%r! zL1D8Q301zF2Br==@4HnM5V;WC}iAsT9J1 zvnbgQ#$rp0EqRbpR3$nKu_fXku6GJJ47kFeq<&o)egE*c5v*Sa2_pQsI3BE4PsyPp z?)fb9P@$pKPn3c{iA|>dhkK0id?V1BA5;p*zYh{6`X%TiIR1Tiz(_x<*hrvOUMQ^; zh$F3F0mqz>La2kANV09Q172g^eZ6 zs|k;3%i(Y_xEHQ~jq#XX*c_Qxlz(ge5`GX|jVS%PusK8W7qb18ZGG#PHT@evcss77 z^~_ z^@2tYt^a^!)5C3rduEl?ghXQ*XP;7|z6RLa_c56kd<`G{A_VRL*MlB~kNz9pEMRX( zbD){_rY1o>?X$S(4};(0XR++dB0Cd@g}`v^ zGum;VfHh6?3E;BjEXE?P7cjuC{U}`GwNF>g zZGeUulO(;@R!nu2a*xPs5C;07iweV_%IF*vUXwSUjfW66R|I|B>4j^;h;_wI@2fRy zjIlnTvraPIODV8sC!}cB0fz@J>kuFI#;=6CD7;b`{cWZhn`y>onz5N?Bw_`x%3z2~ zqOzGWAu%iyVV!Yiu`^DD2NsST3Kge(Dx_?$7dF0V312LE2}_x>ERG8UN#qo!0E_#i zBuRvH04Kp>C;D%}+169Cykm;)^s-4hJ>;d_4PJJlM7i?iGs}}J0|16#lV|A@(M*XR zp~pm}ppMazGX{rxN4EGP<{cH%x z%FA!I2Bo;0%EMr@Dx*?}0Ip%;2P+{1@{st7k$bK+65oOT%Vt&9A2ZdxjIwLSNWtdi z68tck7R0aeAw8@N&SrJ(L?nVUrN`kjDy!>R=O4(Jn;>i-is4{r z)A`J^yQB(TFW+4uwnl3aeEA+qmW{i#XSb7@a;WQ9?ZN!drPFl1KGM&Vq{!6p@;w=n zKehDSPE7k�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 diff --git a/packages/ru.cg.webbpm.packages.base.resources/metadata/typescript.metadata.json b/packages/ru.cg.webbpm.packages.base.resources/metadata/typescript.metadata.json index 2266306..76b2297 100644 --- a/packages/ru.cg.webbpm.packages.base.resources/metadata/typescript.metadata.json +++ b/packages/ru.cg.webbpm.packages.base.resources/metadata/typescript.metadata.json @@ -1 +1 @@ -[{"rootPath":"/","start":0,"end":596,"imports":[{"libraryName":"ag-grid-community","start":0,"end":54,"specifiers":[{"specifier":"ICellRendererParams"}]},{"libraryName":"component.grid.renderers","start":55,"end":143,"specifiers":[{"specifier":"GridCellValueRenderer"}]}],"exports":[],"declarations":[],"classes":[{"name":"BooleanAsCheckboxRenderer","isExported":true,"start":145,"end":596,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[],"methods":[{"name":"render","isAbstract":false,"type":"HTMLElement | string","isOptional":false,"isStatic":false,"isAsync":false,"start":222,"end":331,"decorators":[],"parameters":[{"name":"params","type":"ICellRendererParams","start":229,"end":256}],"variables":[]},{"name":"booleanValueRenderer","isAbstract":false,"visibility":0,"type":"HTMLElement | string","isOptional":false,"isStatic":false,"isAsync":false,"start":335,"end":594,"decorators":[],"parameters":[{"name":"params","type":"ICellRendererParams","start":364,"end":391}],"variables":[{"name":"checkbox","isConst":true,"isExported":false,"start":421,"end":470}]}],"extendsClauses":[],"implementsClauses":["GridCellValueRenderer"]}],"interfaces":[],"enums":[],"resources":[],"usages":["params","ICellRendererParams","HTMLElement","checkbox","document","GridCellValueRenderer"],"packageName":"admin"},{"rootPath":"/","start":0,"end":1853,"imports":[{"libraryName":"decorators.scopes","start":0,"end":69,"specifiers":[{"specifier":"AnalyticalScope"}]},{"libraryName":"component.field","start":70,"end":125,"specifiers":[{"specifier":"LinkField"}]},{"libraryName":"component","start":126,"end":173,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators","start":174,"end":220,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"ag-grid-community","start":221,"end":263,"specifiers":[{"specifier":"GridApi"}]},{"libraryName":"util","start":264,"end":314,"specifiers":[{"specifier":"DateTimeUtil"}]}],"exports":[],"declarations":[],"classes":[{"name":"LinkFieldCurrentTimestampAsDefaultSetter","isExported":true,"start":316,"end":1853,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"AnalyticalScope","parameters":["LinkField"]}],"properties":[{"name":"columnName","type":"string","isOptional":false,"isStatic":false,"start":420,"end":452,"decorators":[{"name":"NotNull","parameters":[]}]},{"name":"linkField","visibility":0,"type":"LinkField","isOptional":false,"isStatic":false,"start":456,"end":485,"decorators":[]},{"name":"oldRows","visibility":0,"type":"any[]","isOptional":false,"isStatic":false,"start":488,"end":511,"decorators":[]},{"name":"ready","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":514,"end":545,"decorators":[]},{"name":"listener","visibility":0,"type":"Function","isOptional":false,"isStatic":false,"start":548,"end":575,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":579,"end":669,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":673,"end":852,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":856,"end":987,"decorators":[],"parameters":[],"variables":[]},{"name":"postStart","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":991,"end":1178,"decorators":[],"parameters":[],"variables":[]},{"name":"setDefaultValues","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":1182,"end":1708,"decorators":[],"parameters":[{"name":"event","start":1207,"end":1212}],"variables":[{"name":"rows","isConst":false,"isExported":false,"start":1264,"end":1302},{"name":"newRows","isConst":false,"isExported":false,"start":1308,"end":1425}]},{"name":"getRowData","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":1712,"end":1851,"decorators":[],"parameters":[{"name":"api","type":"GridApi","start":1731,"end":1743}],"variables":[{"name":"rows","isConst":false,"isExported":false,"start":1751,"end":1765}]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["LinkField","event","rows","newRows","undefined","element","newRow","DateTimeUtil","api","GridApi","node","AnalyticalScope","Behavior","NotNull","columnName","linkField","oldRows","ready","listener","Function"],"packageName":"admin"},{"rootPath":"/","start":0,"end":1922,"imports":[{"libraryName":"component","start":0,"end":77,"specifiers":[{"specifier":"SelectionChangeEvent"}]},{"libraryName":"generated.bpmn.admin","start":78,"end":164,"specifiers":[{"specifier":"AbortProcessService"}]},{"libraryName":"decorators","start":165,"end":217,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"@angular/core","start":218,"end":321,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component.button","start":322,"end":416,"specifiers":[{"specifier":"SelectableComponentButton"}]},{"libraryName":"component","start":417,"end":484,"specifiers":[{"specifier":"DynamicDataGrid"}]},{"libraryName":"component","start":485,"end":560,"specifiers":[{"specifier":"SelectableComponent"}]},{"libraryName":"decorators","start":561,"end":617,"specifiers":[{"specifier":"ObjectRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"AbortButton","isExported":true,"start":650,"end":1921,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'bpmn-abort-button',\n templateUrl: './../../../../../src/resources/template/component/button/Button.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"selectableComponent","visibility":2,"type":"DynamicDataGrid","isOptional":false,"isStatic":false,"start":900,"end":983,"decorators":[{"name":"ObjectRef","parameters":[]},{"name":"NotNull","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"selected","visibility":0,"type":"number","isOptional":false,"isStatic":false,"start":987,"end":1019,"decorators":[]},{"name":"$","visibility":0,"type":"AbortProcessService","isOptional":false,"isStatic":false,"start":1023,"end":1054,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1137,"end":1229,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1233,"end":1301,"decorators":[],"parameters":[],"variables":[]},{"name":"abortProcess","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1305,"end":1479,"decorators":[],"parameters":[],"variables":[]},{"name":"isEnabled","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1483,"end":1563,"decorators":[],"parameters":[],"variables":[]},{"name":"onSelectableComponentChange","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":1567,"end":1817,"decorators":[],"parameters":[{"name":"event","type":"SelectionChangeEvent","start":1605,"end":1632}],"variables":[]},{"name":"getSelectableComponent","isAbstract":false,"visibility":1,"type":"SelectableComponent","isOptional":false,"isStatic":false,"isAsync":false,"start":1821,"end":1919,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["SelectableComponentButton"],"implementsClauses":[],"ctor":{"name":"AbortButton","start":1058,"end":1133,"parameters":[{"name":"el","type":"ElementRef","start":1070,"end":1084},{"name":"cd","type":"ChangeDetectorRef","start":1086,"end":1107}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","AbortProcessService","Promise","event","SelectionChangeEvent","SelectableComponent","author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","SelectableComponentButton","ObjectRef","NotNull","Input","selectableComponent","DynamicDataGrid","selected","$"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":638,"imports":[{"libraryName":"component.button","start":0,"end":56,"specifiers":[{"specifier":"Button"}]},{"libraryName":"@angular/router","start":57,"end":96,"specifiers":[{"specifier":"Router"}]},{"libraryName":"@angular/core","start":97,"end":162,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]}],"exports":[],"declarations":[],"classes":[{"name":"BackBtn","isExported":true,"start":195,"end":637,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'bpmn-back-button',\n templateUrl: './../../../../../src/resources/template/component/button/Button.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"router","visibility":1,"type":"Router","isOptional":false,"isStatic":false,"start":420,"end":445,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":449,"end":536,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":540,"end":635,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Button"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["Router","Promise","author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Button","router"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":503,"imports":[{"libraryName":"bpmn.admin.component","start":0,"end":60,"specifiers":[{"specifier":"RouteParamFilterGrid"}]},{"libraryName":"@angular/core","start":61,"end":126,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]}],"exports":[],"declarations":[],"classes":[{"name":"InMemoryRouteParamFilterGrid","isExported":true,"start":158,"end":502,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'in-memory-route-param-filter-grid',\n templateUrl: './../../../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":437,"end":500,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["RouteParamFilterGrid"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","RouteParamFilterGrid"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":1335,"imports":[{"libraryName":"generated.bpmn.admin.history","start":0,"end":112,"specifiers":[{"specifier":"ProcessHistoryListRpcService"}]},{"libraryName":"modules.bpmn.provider","start":113,"end":223,"specifiers":[{"specifier":"ProcessInstanceParamsProvider"}]},{"libraryName":"component.field","start":224,"end":283,"specifiers":[{"specifier":"TextArea"}]},{"libraryName":"@angular/core","start":284,"end":380,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"ProcessHistoryList","isExported":true,"start":382,"end":1334,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'process-history-list',\n templateUrl: './../../../../../src/resources/template/component/field/TextArea.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"$","visibility":0,"type":"ProcessHistoryListRpcService","isOptional":false,"isStatic":false,"start":625,"end":665,"decorators":[]},{"name":"showVariableLog","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":668,"end":701,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":784,"end":974,"decorators":[],"parameters":[],"variables":[]},{"name":"getHistory","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":978,"end":1132,"decorators":[],"parameters":[{"name":"processInstanceId","start":997,"end":1014}],"variables":[]},{"name":"setShowVariableLog","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1136,"end":1332,"decorators":[],"parameters":[{"name":"showVariableLog","type":"boolean","start":1162,"end":1186}],"variables":[]}],"extendsClauses":["TextArea"],"implementsClauses":[],"ctor":{"name":"ProcessHistoryList","start":705,"end":780,"parameters":[{"name":"el","type":"ElementRef","start":717,"end":731},{"name":"cd","type":"ChangeDetectorRef","start":733,"end":754}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","ProcessHistoryListRpcService","ProcessInstanceParamsProvider","processInstanceId","val","showVariableLog","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","TextArea","$"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":1219,"imports":[{"libraryName":"@angular/core","start":0,"end":96,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"}]},{"libraryName":"component","start":97,"end":148,"specifiers":[{"specifier":"Control"}]},{"libraryName":"generated.bpmn.admin.history","start":149,"end":269,"specifiers":[{"specifier":"ProcessInstanceDiagramRpcService"}]},{"libraryName":"modules.bpmn.provider","start":270,"end":380,"specifiers":[{"specifier":"ProcessInstanceParamsProvider"}]}],"exports":[],"declarations":[],"classes":[{"name":"ProcessInstanceDiagram","isExported":true,"start":382,"end":1218,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'process-instance-diagram',\n templateUrl: './../../../../../src/resources/template/component/ProcessInstanceDiagram.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"svg","visibility":0,"type":"string","isOptional":false,"isStatic":false,"start":640,"end":660,"decorators":[]},{"name":"$","visibility":0,"type":"ProcessInstanceDiagramRpcService","isOptional":false,"isStatic":false,"start":663,"end":707,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":790,"end":1088,"decorators":[],"parameters":[],"variables":[{"name":"processInstanceId","isConst":false,"isExported":false,"start":833,"end":924}]},{"name":"setSvg","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1092,"end":1169,"decorators":[],"parameters":[{"name":"value","type":"string","start":1099,"end":1112}],"variables":[]},{"name":"getSvg","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1173,"end":1216,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Control"],"implementsClauses":[],"ctor":{"name":"ProcessInstanceDiagram","start":711,"end":786,"parameters":[{"name":"el","type":"ElementRef","start":723,"end":737},{"name":"cd","type":"ChangeDetectorRef","start":739,"end":760}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","processInstanceId","ProcessInstanceParamsProvider","ProcessInstanceDiagramRpcService","svg","value","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Control","$"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":666,"imports":[{"libraryName":"component","start":0,"end":53,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"generated.bpmn.admin","start":54,"end":154,"specifiers":[{"specifier":"ProcessInfoLabelRpcService"}]},{"libraryName":"modules.bpmn.provider","start":155,"end":265,"specifiers":[{"specifier":"ProcessInstanceParamsProvider"}]}],"exports":[],"declarations":[],"classes":[{"name":"ProcessLabel","isExported":true,"start":267,"end":665,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"$","visibility":0,"type":"ProcessInfoLabelRpcService","isOptional":false,"isStatic":false,"start":314,"end":352,"decorators":[]},{"name":"value","visibility":0,"type":"string","isOptional":false,"isStatic":false,"start":355,"end":377,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":381,"end":663,"decorators":[],"parameters":[],"variables":[{"name":"processInstanceId","isConst":false,"isExported":false,"start":481,"end":572}]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["ProcessInfoLabelRpcService","processInstanceId","ProcessInstanceParamsProvider","val","Behavior","$","value"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":1090,"imports":[{"libraryName":"component.field","start":0,"end":87,"specifiers":[{"specifier":"StaticRadioButtonGroup"}]},{"libraryName":"component.button","start":88,"end":144,"specifiers":[{"specifier":"Button"}]},{"libraryName":"component","start":145,"end":198,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators","start":199,"end":251,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"decorators","start":252,"end":308,"specifiers":[{"specifier":"ObjectRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"ProcessStateFieldHandler","isExported":true,"start":341,"end":1089,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"stopButton","visibility":2,"type":"Button","isOptional":false,"isStatic":false,"start":400,"end":454,"decorators":[{"name":"ObjectRef","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"radioButton","visibility":0,"type":"StaticRadioButtonGroup","isOptional":false,"isStatic":false,"start":457,"end":501,"decorators":[]},{"name":"onChangeFunction","visibility":0,"type":"Function","isOptional":false,"isStatic":false,"start":504,"end":539,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":543,"end":727,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":731,"end":850,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":854,"end":973,"decorators":[],"parameters":[],"variables":[]},{"name":"onProcessStateChanged","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":977,"end":1087,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["StaticRadioButtonGroup","author","Behavior","ObjectRef","NotNull","stopButton","Button","radioButton","onChangeFunction","Function"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":1418,"imports":[{"libraryName":"component","start":0,"end":69,"specifiers":[{"specifier":"StaticColumnGrid"}]},{"libraryName":"generated.model","start":70,"end":125,"specifiers":[{"specifier":"Filter"}]},{"libraryName":"@angular/router","start":126,"end":181,"specifiers":[{"specifier":"ActivatedRoute"},{"specifier":"Params"}]},{"libraryName":"@angular/core","start":182,"end":278,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"}]},{"libraryName":"util","start":279,"end":333,"specifiers":[{"specifier":"AngularUtil"}]},{"libraryName":"util","start":334,"end":386,"specifiers":[{"specifier":"FilterUtil"}]}],"exports":[],"declarations":[],"classes":[{"name":"RouteParamFilterGrid","isExported":true,"start":388,"end":1417,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'route-param-filter-grid',\n templateUrl: './../../../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":723,"end":827,"decorators":[],"parameters":[],"variables":[]},{"name":"addRouteParamFilters","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":831,"end":1244,"decorators":[],"parameters":[],"variables":[{"name":"route","isConst":true,"isExported":false,"type":"ActivatedRoute","start":866,"end":930},{"name":"routeParams","isConst":true,"isExported":false,"start":935,"end":1000},{"name":"filter","isConst":false,"isExported":false,"start":1120,"end":1180}]},{"name":"reload","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1248,"end":1352,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":1255,"end":1272}],"variables":[]},{"name":"loadData","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1356,"end":1415,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["StaticColumnGrid"],"implementsClauses":[],"ctor":{"name":"RouteParamFilterGrid","start":644,"end":719,"parameters":[{"name":"el","type":"ElementRef","start":656,"end":670},{"name":"cd","type":"ChangeDetectorRef","start":672,"end":693}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Promise","route","ActivatedRoute","routeParams","AngularUtil","params","Params","idx","filter","FilterUtil","filters","Filter","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","StaticColumnGrid"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":1664,"imports":[{"libraryName":"component","start":0,"end":75,"specifiers":[{"specifier":"SelectableComponent"}]},{"libraryName":"component","start":76,"end":153,"specifiers":[{"specifier":"SelectionChangeEvent"}]},{"libraryName":"@angular/router","start":154,"end":193,"specifiers":[{"specifier":"Router"}]},{"libraryName":"decorators","start":194,"end":246,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"@angular/core","start":247,"end":350,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component.button","start":351,"end":445,"specifiers":[{"specifier":"SelectableComponentButton"}]},{"libraryName":"decorators","start":446,"end":502,"specifiers":[{"specifier":"ObjectRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"SelectBtn","isExported":true,"start":535,"end":1663,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'bpmn-select-button',\n templateUrl: './../../../../../src/resources/template/component/button/Button.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"selectableComponent","visibility":2,"type":"SelectableComponent","isOptional":false,"isStatic":false,"start":784,"end":871,"decorators":[{"name":"ObjectRef","parameters":[]},{"name":"NotNull","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"selected","visibility":0,"type":"number","isOptional":false,"isStatic":false,"start":875,"end":907,"decorators":[]},{"name":"router","visibility":1,"type":"Router","isOptional":false,"isStatic":false,"start":910,"end":935,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1018,"end":1105,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1109,"end":1221,"decorators":[],"parameters":[],"variables":[]},{"name":"onSelectableComponentChange","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":1225,"end":1475,"decorators":[],"parameters":[{"name":"event","type":"SelectionChangeEvent","start":1263,"end":1290}],"variables":[]},{"name":"getSelectableComponent","isAbstract":false,"visibility":1,"type":"SelectableComponent","isOptional":false,"isStatic":false,"isAsync":false,"start":1479,"end":1577,"decorators":[],"parameters":[],"variables":[]},{"name":"isEnabled","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1581,"end":1661,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["SelectableComponentButton"],"implementsClauses":[],"ctor":{"name":"SelectBtn","start":939,"end":1014,"parameters":[{"name":"el","type":"ElementRef","start":951,"end":965},{"name":"cd","type":"ChangeDetectorRef","start":967,"end":988}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Router","Promise","event","SelectionChangeEvent","SelectableComponent","author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","SelectableComponentButton","ObjectRef","NotNull","Input","selectableComponent","selected","router"],"packageName":"bpmn.admin.component"},{"rootPath":"/","start":0,"end":3248,"imports":[{"libraryName":"rxjs","start":0,"end":34,"specifiers":[{"specifier":"Subscription"}]},{"libraryName":"rxjs","start":35,"end":62,"specifiers":[{"specifier":"timer"}]},{"libraryName":"component","start":63,"end":110,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators.scopes","start":111,"end":180,"specifiers":[{"specifier":"AnalyticalScope"}]},{"libraryName":"component","start":181,"end":226,"specifiers":[{"specifier":"Control"}]}],"exports":[],"declarations":[],"classes":[{"name":"AutoHeight","isExported":true,"start":621,"end":3247,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"AnalyticalScope","parameters":["Control"]}],"properties":[{"name":"minHeight","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":692,"end":717,"decorators":[]},{"name":"height","visibility":0,"type":"number","isOptional":false,"isStatic":false,"start":721,"end":744,"decorators":[]}],"methods":[{"name":"start","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":748,"end":1121,"decorators":[],"parameters":[],"variables":[{"name":"checkSizeSubscription","isConst":false,"isExported":false,"type":"Subscription","start":801,"end":901}]},{"name":"resize","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1125,"end":1238,"decorators":[],"parameters":[],"variables":[{"name":"autoHeight","isConst":false,"isExported":false,"start":1154,"end":1194}]},{"name":"setHeightIfNeeded","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1242,"end":1634,"decorators":[],"parameters":[{"name":"autoHeight","type":"number","start":1268,"end":1286}],"variables":[{"name":"element","isConst":false,"isExported":false,"start":1300,"end":1342}]},{"name":"calculateHeight","isAbstract":false,"visibility":0,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":1638,"end":2055,"decorators":[],"parameters":[],"variables":[{"name":"element","isConst":false,"isExported":false,"type":"HTMLElement","start":1678,"end":1727},{"name":"contentRoot","isConst":false,"isExported":false,"type":"HTMLElement","start":1732,"end":1785},{"name":"pageHeight","isConst":false,"isExported":false,"type":"number","start":1791,"end":1841},{"name":"ownHeight","isConst":false,"isExported":false,"type":"number","start":1846,"end":1890},{"name":"ownMarginAndPaddingHeight","isConst":false,"isExported":false,"type":"number","start":1895,"end":1976}]},{"name":"contentHeight","isAbstract":false,"visibility":0,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2059,"end":2430,"decorators":[],"parameters":[],"variables":[{"name":"element","isConst":false,"isExported":false,"type":"HTMLElement","start":2097,"end":2146},{"name":"contentRoot","isConst":false,"isExported":false,"type":"HTMLElement","start":2151,"end":2204},{"name":"contentHeight","isConst":false,"isExported":false,"type":"number","start":2210,"end":2240}]},{"name":"neighboursHeight","isAbstract":false,"visibility":0,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2434,"end":2784,"decorators":[],"parameters":[{"name":"element","type":"HTMLElement","start":2459,"end":2479},{"name":"parent","type":"HTMLElement","start":2481,"end":2500}],"variables":[{"name":"height","isConst":false,"isExported":false,"type":"number","start":2516,"end":2539},{"name":"child","isConst":false,"isExported":false,"type":"HTMLElement","start":2609,"end":2671}]},{"name":"getHostElement","isAbstract":false,"visibility":0,"type":"HTMLElement","isOptional":false,"isStatic":false,"isAsync":false,"start":2788,"end":2880,"decorators":[],"parameters":[],"variables":[]},{"name":"getJqueryHostElement","isAbstract":false,"visibility":0,"type":"JQuery","isOptional":false,"isStatic":false,"isAsync":false,"start":2884,"end":2969,"decorators":[],"parameters":[],"variables":[]},{"name":"getContentRoot","isAbstract":false,"visibility":0,"type":"HTMLElement","isOptional":false,"isStatic":false,"isAsync":false,"start":2973,"end":3080,"decorators":[],"parameters":[],"variables":[]},{"name":"checkSize","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3084,"end":3245,"decorators":[],"parameters":[],"variables":[{"name":"autoHeight","isConst":false,"isExported":false,"start":3116,"end":3156}]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["checkSizeSubscription","Subscription","timer","$","window","autoHeight","element","HTMLElement","contentRoot","pageHeight","ownHeight","ownMarginAndPaddingHeight","contentHeight","parent","height","i","child","JQuery","AnalyticalScope","Control","Behavior","minHeight"],"packageName":"common"},{"rootPath":"/","start":0,"end":865,"imports":[{"libraryName":"component","start":0,"end":63,"specifiers":[{"specifier":"ControlWithValue"}]},{"libraryName":"component","start":64,"end":111,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators.scopes","start":112,"end":181,"specifiers":[{"specifier":"AnalyticalScope"}]},{"libraryName":"modules.bpmn.api.v2.model","start":182,"end":267,"specifiers":[{"specifier":"ProcessVariableType"}]},{"libraryName":"modules.bpmn.api.v2.model","start":268,"end":345,"specifiers":[{"specifier":"ProcessVariable"}]},{"libraryName":"decorators","start":346,"end":392,"specifiers":[{"specifier":"NotNull"}]}],"exports":[],"declarations":[],"classes":[{"name":"BpmnStartProcessVariable","isExported":true,"start":394,"end":864,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"AnalyticalScope","parameters":["ControlWithValue"]}],"properties":[{"name":"variableName","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":490,"end":531,"decorators":[{"name":"NotNull","parameters":[]}]},{"name":"type","visibility":2,"type":"ProcessVariableType","isOptional":false,"isStatic":false,"start":558,"end":604,"decorators":[{"name":"NotNull","parameters":[]}]},{"name":"isArray","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":607,"end":644,"decorators":[{"name":"NotNull","parameters":[]}]}],"methods":[{"name":"getVariableForStartProcess","isAbstract":false,"visibility":2,"type":"ProcessVariable","isOptional":false,"isStatic":false,"isAsync":false,"start":648,"end":862,"decorators":[],"parameters":[],"variables":[{"name":"value","isConst":false,"isExported":false,"start":707,"end":775}]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["ProcessVariable","value","AnalyticalScope","Behavior","NotNull","variableName","type","ProcessVariableType","isArray"],"packageName":"common"},{"rootPath":"/","start":0,"end":323,"imports":[],"exports":[],"declarations":[],"classes":[{"name":"Deferred","isExported":true,"start":0,"end":323,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"promise","type":"Promise","isOptional":false,"isStatic":false,"start":72,"end":92,"decorators":[]},{"name":"resolve","type":"(value?: T | PromiseLike) => void","isOptional":false,"isStatic":false,"start":95,"end":141,"decorators":[]},{"name":"reject","type":"(reason?: any) => void","isOptional":false,"isStatic":false,"start":144,"end":175,"decorators":[]}],"methods":[],"extendsClauses":[],"implementsClauses":[],"typeParameters":["T"],"ctor":{"name":"Deferred","start":179,"end":321,"parameters":[],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["Promise","T","resolve","reject","promise","value","PromiseLike","reason"],"packageName":"common"},{"rootPath":"/","start":0,"end":805,"imports":[{"libraryName":"component","start":0,"end":47,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"generated.rpc.button","start":48,"end":142,"specifiers":[{"specifier":"ExecuteSqlButtonRpcService"}]},{"libraryName":"common","start":143,"end":185,"specifiers":[{"specifier":"ObjectValue"}]},{"libraryName":"decorators","start":186,"end":232,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"webbpm.ui_scripting","start":233,"end":284,"specifiers":[{"specifier":"Value"}]},{"libraryName":"decorators","start":285,"end":337,"specifiers":[{"specifier":"Deprecated"}]}],"exports":[],"declarations":[],"classes":[{"name":"ExecuteSqlService","isExported":true,"start":339,"end":804,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"params","visibility":2,"type":"ObjectValue[]","isOptional":false,"isStatic":false,"start":392,"end":462,"decorators":[{"name":"Visible","parameters":["false"]},{"name":"Deprecated","parameters":[]}]},{"name":"queryParams","visibility":2,"type":"Value[]","isOptional":false,"isStatic":false,"start":496,"end":528,"decorators":[]},{"name":"$","visibility":0,"type":"ExecuteSqlButtonRpcService","isOptional":false,"isStatic":false,"start":532,"end":570,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":574,"end":681,"decorators":[],"parameters":[],"variables":[]},{"name":"executeSql","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":685,"end":802,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["ExecuteSqlButtonRpcService","Visible","param","Behavior","Deprecated","params","ObjectValue","queryParams","Value","$"],"packageName":"common"},{"rootPath":"/","start":0,"end":84,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"Expandable","isExported":true,"start":0,"end":84,"accessors":[],"properties":[],"methods":[{"name":"expand","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":32,"end":41,"decorators":[],"parameters":[],"variables":[]},{"name":"collapse","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":45,"end":56,"decorators":[],"parameters":[],"variables":[]},{"name":"isExpanded","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":60,"end":82,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["expand","collapse","isExpanded"],"packageName":"common"},{"rootPath":"/","start":0,"end":366,"imports":[{"libraryName":"generated.model.filter","start":0,"end":82,"specifiers":[{"specifier":"FilterableReference"}]},{"libraryName":"generated.model","start":83,"end":132,"specifiers":[{"specifier":"Filter"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"Filterable","isExported":true,"start":134,"end":365,"accessors":[],"properties":[],"methods":[{"name":"reload","isAbstract":true,"visibility":2,"type":"Promise | void","isOptional":false,"isStatic":false,"isAsync":false,"start":195,"end":242,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":202,"end":219}],"variables":[]},{"name":"disableInitialLoading","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":246,"end":270,"decorators":[],"parameters":[],"variables":[]},{"name":"addFilter","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":274,"end":306,"decorators":[],"parameters":[{"name":"filter","type":"Filter","start":284,"end":298}],"variables":[]},{"name":"removeFilter","isAbstract":true,"visibility":2,"type":"Filter","isOptional":false,"isStatic":false,"isAsync":false,"start":310,"end":345,"decorators":[],"parameters":[{"name":"guid","type":"string","start":323,"end":335}],"variables":[]},{"name":"clear","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":349,"end":363,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["FilterableReference"],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["FilterableReference","reload","filters","Filter","Promise","disableInitialLoading","addFilter","filter","removeFilter","guid","clear"],"packageName":"common"},{"rootPath":"/","start":0,"end":48,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"Focusable","isExported":true,"start":0,"end":47,"accessors":[],"properties":[],"methods":[{"name":"focus","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":31,"end":45,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["focus"],"packageName":"common"},{"rootPath":"/","start":0,"end":96,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"HasCustomValidationMessages","isExported":true,"start":0,"end":95,"accessors":[],"properties":[],"methods":[{"name":"getCustomValidationMessages","isAbstract":true,"visibility":2,"type":"Set","isOptional":false,"isStatic":false,"isAsync":false,"start":50,"end":93,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["getCustomValidationMessages","Set"],"packageName":"common"},{"rootPath":"/","start":0,"end":507,"imports":[{"libraryName":"component","start":0,"end":47,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators","start":48,"end":98,"specifiers":[{"specifier":"ObjectRef"}]},{"libraryName":"webbpm.ui_scripting","start":99,"end":150,"specifiers":[{"specifier":"Value"}]}],"exports":[],"declarations":[],"classes":[{"name":"ObjectValue","isExported":true,"start":152,"end":507,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"behavior","visibility":2,"type":"Behavior","isOptional":false,"isStatic":false,"start":182,"end":223,"decorators":[{"name":"ObjectRef","parameters":[]}]},{"name":"method","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":226,"end":248,"decorators":[]},{"name":"argument","visibility":2,"type":"Value","isOptional":false,"isStatic":false,"start":251,"end":274,"decorators":[]}],"methods":[{"name":"getValue","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":278,"end":505,"decorators":[],"parameters":[],"variables":[{"name":"func","isConst":false,"isExported":false,"start":300,"end":338}]}],"extendsClauses":[],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["func","ObjectRef","behavior","Behavior","method","argument","Value"],"packageName":"common"},{"rootPath":"/","start":0,"end":511,"imports":[{"libraryName":"common","start":0,"end":47,"specifiers":[{"specifier":"rejectMessage"}]}],"exports":[],"declarations":[],"classes":[{"name":"PromiseWrapper","isExported":true,"start":49,"end":511,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"reject","type":"(reason?: any) => void","isOptional":false,"isStatic":false,"start":85,"end":116,"decorators":[]},{"name":"promise","visibility":0,"type":"Promise","isOptional":false,"isStatic":false,"start":120,"end":153,"decorators":[]}],"methods":[{"name":"wrap","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":157,"end":509,"decorators":[],"parameters":[{"name":"value","type":"Promise","start":169,"end":186}],"variables":[]}],"extendsClauses":[],"implementsClauses":[],"typeParameters":["T"]}],"interfaces":[],"enums":[],"resources":[],"usages":["value","Promise","T","resolve","reject","reason","window","rejectMessage","promise"],"packageName":"common"},{"rootPath":"/","start":0,"end":153,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"Validatable","isExported":true,"start":0,"end":152,"accessors":[],"properties":[],"methods":[{"name":"isValid","isAbstract":true,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":34,"end":62,"decorators":[],"parameters":[],"variables":[]},{"name":"actionOnInvalid","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":66,"end":84,"decorators":[],"parameters":[],"variables":[]},{"name":"isNeedToValidate","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":88,"end":116,"decorators":[],"parameters":[],"variables":[]},{"name":"clearValidateMessages","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":120,"end":150,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["isValid","Promise","actionOnInvalid","isNeedToValidate","clearValidateMessages"],"packageName":"common"},{"rootPath":"/","start":0,"end":5164,"imports":[{"libraryName":"component","start":0,"end":50,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"modules.core.service","start":51,"end":127,"specifiers":[{"specifier":"MessagesService"}]},{"libraryName":"component","start":128,"end":194,"specifiers":[{"specifier":"ControlWithValue"}]},{"libraryName":"generated.rpc.loading","start":195,"end":301,"specifiers":[{"specifier":"DefaultValueLoaderRpcServiceV2"}]},{"libraryName":"modules.core.service","start":302,"end":403,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"webbpm.event","start":404,"end":451,"specifiers":[{"specifier":"Event"}]},{"libraryName":"decorators.scopes","start":452,"end":524,"specifiers":[{"specifier":"AnalyticalScope"}]},{"libraryName":"decorators","start":525,"end":574,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"generated.model","start":575,"end":633,"specifiers":[{"specifier":"FieldData"}]},{"libraryName":"modules.bpmn.service","start":634,"end":723,"specifiers":[{"specifier":"FieldValueFromVariable"}]},{"libraryName":"error","start":724,"end":792,"specifiers":[{"specifier":"ScriptLocationError"}]},{"libraryName":"error","start":793,"end":881,"specifiers":[{"specifier":"MutuallyExclusiveScriptsError"}]},{"libraryName":"component.container","start":882,"end":946,"specifiers":[{"specifier":"IContainer"}]}],"exports":[],"declarations":[],"classes":[{"name":"DefaultValueLoaderV2","isExported":true,"start":948,"end":5163,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"AnalyticalScope","parameters":["IContainer"]}],"properties":[{"name":"container","visibility":0,"type":"IContainer","isOptional":false,"isStatic":false,"start":1035,"end":1065,"decorators":[]},{"name":"$","visibility":0,"type":"DefaultValueLoaderRpcServiceV2","isOptional":false,"isStatic":false,"start":1068,"end":1110,"decorators":[]},{"name":"progressIndicationService","visibility":0,"type":"ProgressIndicationService","isOptional":false,"isStatic":false,"start":1113,"end":1174,"decorators":[]},{"name":"messagesService","visibility":0,"type":"MessagesService","isOptional":false,"isStatic":false,"start":1177,"end":1218,"decorators":[]},{"name":"defaultValuesLoaded","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":1221,"end":1311,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"_isLoaded","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":1314,"end":1349,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1353,"end":1902,"decorators":[],"parameters":[],"variables":[]},{"name":"load","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1906,"end":2767,"decorators":[],"parameters":[],"variables":[{"name":"guidToControlMapping","isConst":false,"isExported":false,"type":"Map","start":1940,"end":2043},{"name":"guids","isConst":false,"isExported":false,"start":2048,"end":2100}]},{"name":"setValues","isAbstract":false,"visibility":0,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":2771,"end":4025,"decorators":[],"parameters":[{"name":"fieldsData","type":"FieldData[]","start":2789,"end":2812},{"name":"guidToControlMapping","type":"Map","start":2814,"end":2865}],"variables":[{"name":"component","isConst":false,"isExported":false,"type":"ControlWithValue","start":2989,"end":3073},{"name":"fieldValueFromVariable","isConst":false,"isExported":false,"type":"FieldValueFromVariable","start":3080,"end":3215},{"name":"valueSetPromises","isConst":false,"isExported":false,"start":3471,"end":3979},{"name":"control","isConst":false,"isExported":false,"start":3543,"end":3607},{"name":"fieldValue","isConst":false,"isExported":false,"start":3618,"end":3640}]},{"name":"setFieldValue","isAbstract":false,"visibility":1,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":4084,"end":4287,"decorators":[],"parameters":[{"name":"fieldData","type":"FieldData","start":4108,"end":4128},{"name":"control","type":"ControlWithValue","start":4130,"end":4155}],"variables":[]},{"name":"getGuidToControlMapping","isAbstract":false,"visibility":0,"type":"Map","isOptional":false,"isStatic":false,"isAsync":false,"start":4291,"end":5085,"decorators":[],"parameters":[{"name":"container","type":"IContainer","start":4323,"end":4344}],"variables":[{"name":"controls","isConst":false,"isExported":false,"type":"ControlWithValue[]","start":4383,"end":4474},{"name":"guidToControlMapping","isConst":false,"isExported":false,"start":4479,"end":4643},{"name":"containers","isConst":false,"isExported":false,"start":4648,"end":4725}]},{"name":"isLoaded","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":5089,"end":5161,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["ProgressIndicationService","MessagesService","ScriptLocationError","DefaultValueLoaderRpcServiceV2","Promise","guidToControlMapping","Map","ControlWithValue","guids","Array","fieldsData","reason","console","FieldData","fieldData","component","fieldValueFromVariable","FieldValueFromVariable","MutuallyExclusiveScriptsError","DefaultValueLoaderV2","valueSetPromises","control","fieldValue","e","promise","container","IContainer","controls","containers","prev","cur","value","key","Visible","AnalyticalScope","Behavior","$","progressIndicationService","messagesService","defaultValuesLoaded","Event","_isLoaded"],"packageName":"common.defaultvalue"},{"rootPath":"/","start":0,"end":60,"imports":[],"exports":[],"declarations":[{"name":"rejectMessage","isConst":true,"isExported":true,"type":"string","start":0,"end":60}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["rejectMessage"],"packageName":"common"},{"rootPath":"/","start":0,"end":103,"imports":[{"libraryName":"common","start":0,"end":43,"specifiers":[{"specifier":"Validatable"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"FormValidatable","isExported":true,"start":45,"end":102,"accessors":[],"properties":[],"methods":[],"extendsClauses":["Validatable"],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["Validatable"],"packageName":"common.validatable"},{"rootPath":"/","start":0,"end":840,"imports":[{"libraryName":"component","start":0,"end":36,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"component","start":37,"end":89,"specifiers":[{"specifier":"ControlWithValue"}]},{"libraryName":"component.field","start":90,"end":140,"specifiers":[{"specifier":"InputControl"}]},{"libraryName":"component.field","start":141,"end":185,"specifiers":[{"specifier":"TextField"}]},{"libraryName":"decorators.scopes","start":186,"end":255,"specifiers":[{"specifier":"AnalyticalScope"}]},{"libraryName":"decorators","start":256,"end":302,"specifiers":[{"specifier":"Visible"}]}],"exports":[],"declarations":[],"classes":[{"name":"Append","isExported":true,"start":333,"end":839,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"AnalyticalScope","parameters":["TextField"]}],"properties":[{"name":"script","visibility":0,"type":"ControlWithValue","isOptional":false,"isStatic":false,"start":402,"end":435,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":439,"end":529,"decorators":[],"parameters":[],"variables":[]},{"name":"append","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":533,"end":837,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":553,"end":566}],"variables":[{"name":"currentValue","isConst":false,"isExported":false,"start":574,"end":616}]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["InputControl","Visible","value","currentValue","undefined","author","AnalyticalScope","TextField","Behavior","script","ControlWithValue"],"packageName":"component"},{"rootPath":"/","start":0,"end":2412,"imports":[{"libraryName":"@angular/core","start":0,"end":103,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component","start":104,"end":132,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"component.grid","start":133,"end":198,"specifiers":[{"specifier":"AutoHeightGridLoader"}]},{"libraryName":"rxjs","start":199,"end":233,"specifiers":[{"specifier":"Subscription"}]},{"libraryName":"rxjs","start":234,"end":261,"specifiers":[{"specifier":"timer"}]},{"libraryName":"decorators","start":262,"end":326,"specifiers":[{"specifier":"AdvancedProperty"}]},{"libraryName":"ag-grid-community","start":327,"end":377,"specifiers":[{"specifier":"BodyScrollEvent"}]}],"exports":[],"declarations":[],"classes":[{"name":"AutoHeightGrid","isExported":true,"start":379,"end":2411,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'auto-height-grid',\n templateUrl: './../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"autoHeightLoader","visibility":0,"type":"AutoHeightGridLoader","isOptional":false,"isStatic":false,"start":604,"end":651,"decorators":[]},{"name":"refreshRow","visibility":0,"type":"number","isOptional":false,"isStatic":false,"start":654,"end":681,"decorators":[]},{"name":"autoRefreshSubscription","visibility":1,"type":"Subscription","isOptional":false,"isStatic":false,"start":684,"end":732,"decorators":[]},{"name":"refreshTimeout","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":736,"end":804,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]}]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":808,"end":985,"decorators":[],"parameters":[],"variables":[]},{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1068,"end":1131,"decorators":[],"parameters":[],"variables":[]},{"name":"onBodyScroll","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":1135,"end":1697,"decorators":[],"parameters":[{"name":"event","type":"BodyScrollEvent","start":1155,"end":1177}],"variables":[{"name":"lastDisplayedRow","isConst":false,"isExported":false,"start":1216,"end":1279}]},{"name":"bindEvents","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1701,"end":1782,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1786,"end":1867,"decorators":[],"parameters":[],"variables":[]},{"name":"subscribeAutoRefresh","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1871,"end":2189,"decorators":[],"parameters":[],"variables":[]},{"name":"unsubscribeAutoRefresh","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2193,"end":2333,"decorators":[],"parameters":[],"variables":[]},{"name":"setRefreshTimeount","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":2337,"end":2409,"decorators":[],"parameters":[{"name":"value","type":"number","start":2356,"end":2369}],"variables":[]}],"extendsClauses":["Grid"],"implementsClauses":[],"ctor":{"name":"AutoHeightGrid","start":989,"end":1064,"parameters":[{"name":"el","type":"ElementRef","start":1001,"end":1015},{"name":"cd","type":"ChangeDetectorRef","start":1017,"end":1038}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["Promise","AutoHeightGridLoader","Number","el","ElementRef","cd","ChangeDetectorRef","event","BodyScrollEvent","lastDisplayedRow","timer","value","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Grid","autoHeightLoader","refreshRow","autoRefreshSubscription","Subscription","Input","AdvancedProperty","refreshTimeout"],"packageName":"component"},{"rootPath":"/","start":0,"end":10311,"imports":[{"libraryName":"@angular/core","start":0,"end":145,"specifiers":[{"specifier":"AfterViewInit"},{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"},{"specifier":"Input"},{"specifier":"OnChanges"},{"specifier":"OnDestroy"},{"specifier":"OnInit"},{"specifier":"SimpleChanges"}]},{"libraryName":"component","start":146,"end":182,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"decorators","start":183,"end":229,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"modules.page.model","start":230,"end":291,"specifiers":[{"specifier":"InjectBean"}]},{"libraryName":"modules.page.model","start":292,"end":377,"specifiers":[{"specifier":"ObjRefInitializerBean"}]}],"exports":[],"declarations":[],"classes":[{"name":"BaseComponent","isExported":true,"start":379,"end":10310,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"injectBean","visibility":2,"type":"InjectBean","isOptional":false,"isStatic":false,"start":492,"end":553,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"el","visibility":1,"type":"ElementRef","isOptional":false,"isStatic":false,"start":557,"end":582,"decorators":[]},{"name":"parentContext","visibility":1,"type":"BaseComponent","isOptional":false,"isStatic":false,"start":586,"end":625,"decorators":[]},{"name":"onDestroyHandlers","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":629,"end":674,"decorators":[]},{"name":"cd","visibility":1,"type":"ChangeDetectorRef","isOptional":false,"isStatic":false,"start":678,"end":710,"decorators":[]},{"name":"injectMap","visibility":0,"type":"any","isOptional":false,"isStatic":false,"start":714,"end":737,"decorators":[]},{"name":"parentId","visibility":0,"type":"string","isOptional":false,"isStatic":false,"start":741,"end":766,"decorators":[]},{"name":"childrenIds","visibility":0,"type":"string[]","isOptional":false,"isStatic":false,"start":770,"end":805,"decorators":[]},{"name":"relativesInitiated","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":809,"end":853,"decorators":[]},{"name":"directChildren","visibility":0,"type":"any[]","isOptional":false,"isStatic":false,"start":857,"end":892,"decorators":[]},{"name":"initialComponentScript","visibility":0,"type":"any","isOptional":false,"isStatic":false,"start":896,"end":932,"decorators":[]}],"methods":[{"name":"getEl","isAbstract":false,"visibility":2,"type":"ElementRef","isOptional":false,"isStatic":false,"isAsync":false,"start":1100,"end":1152,"decorators":[],"parameters":[],"variables":[]},{"name":"initRelatives","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":1156,"end":1437,"decorators":[],"parameters":[],"variables":[]},{"name":"ngOnChanges","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1441,"end":3134,"decorators":[],"parameters":[{"name":"changes","type":"SimpleChanges","start":1453,"end":1475}],"variables":[{"name":"objectIdStr","isConst":false,"isExported":false,"start":1518,"end":1561},{"name":"injectBeanChanged","isConst":false,"isExported":false,"start":1795,"end":1853},{"name":"injectBeanChange","isConst":false,"isExported":false,"start":1909,"end":1954},{"name":"injectBean","isConst":false,"isExported":false,"type":"InjectBean","start":1961,"end":2020}]},{"name":"isInjectBeanChanged","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":3138,"end":3283,"decorators":[],"parameters":[{"name":"changes","type":"SimpleChanges","start":3168,"end":3190}],"variables":[]},{"name":"ngOnInit","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3287,"end":3309,"decorators":[],"parameters":[],"variables":[]},{"name":"ngAfterViewInit","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":3313,"end":3336,"decorators":[],"parameters":[],"variables":[]},{"name":"ngOnDestroy","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3340,"end":3562,"decorators":[],"parameters":[],"variables":[]},{"name":"getParentContext","isAbstract":false,"visibility":2,"type":"BaseComponent","isOptional":false,"isStatic":false,"isAsync":false,"start":3566,"end":3643,"decorators":[],"parameters":[],"variables":[]},{"name":"initParentContext","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3647,"end":4110,"decorators":[],"parameters":[],"variables":[{"name":"parentNode","isConst":false,"isExported":false,"type":"HTMLElement","start":3686,"end":3752},{"name":"parentOfParent","isConst":false,"isExported":false,"type":"HTMLElement","start":3757,"end":3789}]},{"name":"addOnDestroyHandler","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":4114,"end":4207,"decorators":[],"parameters":[{"name":"handler","type":"Function","start":4141,"end":4158}],"variables":[]},{"name":"getScriptInChildren","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":4591,"end":5032,"decorators":[],"parameters":[{"name":"_class","type":"any","start":4618,"end":4629},{"name":"nodePredicate","type":"(item: any) => boolean","start":4631,"end":4669}],"variables":[{"name":"queue","isConst":false,"isExported":false,"type":"any[]","start":4682,"end":4727},{"name":"item","isConst":false,"isExported":false,"start":4765,"end":4790},{"name":"found","isConst":false,"isExported":false,"start":4797,"end":4832}]},{"name":"getScriptsInChildren","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":5417,"end":5990,"decorators":[],"parameters":[{"name":"_class","type":"any","start":5445,"end":5456},{"name":"nodePredicate","type":"(item: any) => boolean","start":5458,"end":5496}],"variables":[{"name":"scripts","isConst":false,"isExported":false,"type":"any[]","start":5511,"end":5535},{"name":"queue","isConst":false,"isExported":false,"type":"BaseComponent[]","start":5540,"end":5595},{"name":"item","isConst":false,"isExported":false,"start":5633,"end":5658}]},{"name":"getScriptInThisAndChildren","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":6381,"end":6629,"decorators":[],"parameters":[{"name":"_class","type":"any","start":6415,"end":6426},{"name":"nodePredicate","type":"(item: any) => boolean","start":6428,"end":6466}],"variables":[{"name":"found","isConst":false,"isExported":false,"start":6479,"end":6514}]},{"name":"getScriptsInThisAndChildren","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":7029,"end":7279,"decorators":[],"parameters":[{"name":"_class","type":"any","start":7064,"end":7075},{"name":"nodePredicate","type":"(item: any) => boolean","start":7077,"end":7115}],"variables":[{"name":"scripts","isConst":false,"isExported":false,"type":"any[]","start":7130,"end":7175}]},{"name":"getScriptInAncestor","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":7658,"end":8067,"decorators":[],"parameters":[{"name":"_class","type":"any","start":7685,"end":7696},{"name":"nodePredicate","type":"(item: any) => boolean","start":7698,"end":7736}],"variables":[{"name":"ancestor","isConst":false,"isExported":false,"type":"BaseComponent","start":7749,"end":7803},{"name":"found","isConst":false,"isExported":false,"start":7833,"end":7872}]},{"name":"getScriptsInAncestor","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":8441,"end":8832,"decorators":[],"parameters":[{"name":"_class","type":"any","start":8469,"end":8480},{"name":"nodePredicate","type":"(item: any) => boolean","start":8482,"end":8520}],"variables":[{"name":"scripts","isConst":false,"isExported":false,"type":"any[]","start":8535,"end":8559},{"name":"ancestor","isConst":false,"isExported":false,"type":"BaseComponent","start":8564,"end":8618}]},{"name":"getChildComponents","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":8836,"end":8913,"decorators":[],"parameters":[],"variables":[]},{"name":"getScriptsInSiblings","isAbstract":false,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":9055,"end":9200,"decorators":[],"parameters":[{"name":"_class","type":"any","start":9076,"end":9087}],"variables":[{"name":"parentContext","isConst":false,"isExported":false,"start":9102,"end":9146}]},{"name":"getChildScripts","isAbstract":false,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":9427,"end":9719,"decorators":[],"parameters":[{"name":"_class","type":"any","start":9443,"end":9454},{"name":"nodePredicate","type":"(item: any) => boolean","start":9456,"end":9494}],"variables":[{"name":"result","isConst":false,"isExported":false,"start":9509,"end":9525}]},{"name":"getScriptInObject","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":9889,"end":10188,"decorators":[],"parameters":[{"name":"objectId","type":"string","start":9907,"end":9923},{"name":"_class","type":"any","start":9925,"end":9936}],"variables":[{"name":"targetCmp","isConst":false,"isExported":false,"type":"BaseComponent","start":9949,"end":10125}]},{"name":"getChangeDetector","isAbstract":false,"type":"ChangeDetectorRef","isOptional":false,"isStatic":false,"isAsync":false,"start":10192,"end":10256,"decorators":[],"parameters":[],"variables":[]},{"name":"markForCheck","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":10260,"end":10308,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":["OnDestroy","OnInit","AfterViewInit","OnChanges"],"ctor":{"name":"BaseComponent","start":936,"end":1096,"parameters":[{"name":"el","type":"ElementRef","start":948,"end":962},{"name":"cd","type":"ChangeDetectorRef","start":964,"end":985}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","childId","changes","SimpleChanges","objectIdStr","injectBeanChanged","injectBeanChange","injectBean","InjectBean","script","Behavior","key","Object","initializer","ObjRefInitializerBean","handler","BaseComponent","parentNode","HTMLElement","parentOfParent","undefined","Function","param","_class","nodePredicate","returns","item","queue","found","scripts","Error","ancestor","parentContext","result","objectId","targetCmp","OnDestroy","OnInit","AfterViewInit","OnChanges","Input","Visible","onDestroyHandlers","injectMap","parentId","childrenIds","relativesInitiated","directChildren","initialComponentScript"],"packageName":"component"},{"rootPath":"/","start":0,"end":39743,"imports":[{"libraryName":"ag-grid-community","start":0,"end":503,"specifiers":[{"specifier":"BodyScrollEvent"},{"specifier":"CellClickedEvent"},{"specifier":"ColDef"},{"specifier":"ColumnApi"},{"specifier":"ColumnMovedEvent"},{"specifier":"ColumnResizedEvent"},{"specifier":"ColumnVisibleEvent"},{"specifier":"ComponentStateChangedEvent"},{"specifier":"Events"},{"specifier":"GetContextMenuItemsParams"},{"specifier":"GetRowIdFunc"},{"specifier":"GridApi"},{"specifier":"GridReadyEvent"},{"specifier":"ICellRendererFunc"},{"specifier":"ICellRendererParams"},{"specifier":"IRowNode"},{"specifier":"MenuItemDef"},{"specifier":"ProcessCellForExportParams"},{"specifier":"RowClickedEvent"},{"specifier":"RowDoubleClickedEvent"},{"specifier":"RowNode"},{"specifier":"SelectionChangedEvent"},{"specifier":"SortChangedEvent"},{"specifier":"SuppressKeyboardEventParams"}]},{"libraryName":"generated.property.grid","start":504,"end":571,"specifiers":[{"specifier":"GridColumns"}]},{"libraryName":"generated.model.grid","start":572,"end":630,"specifiers":[{"specifier":"SortInfo"}]},{"libraryName":"component","start":631,"end":665,"specifiers":[{"specifier":"Control"}]},{"libraryName":"component.grid","start":666,"end":723,"specifiers":[{"specifier":"GridConfigurator"}]},{"libraryName":"webbpm.event","start":724,"end":768,"specifiers":[{"specifier":"Event"}]},{"libraryName":"decorators","start":769,"end":833,"specifiers":[{"specifier":"AdvancedProperty"}]},{"libraryName":"@angular/core","start":834,"end":901,"specifiers":[{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"common","start":902,"end":946,"specifiers":[{"specifier":"Deferred"}]},{"libraryName":"decorators","start":947,"end":993,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"decorators","start":994,"end":1066,"specifiers":[{"specifier":"ExcludeTypeFiltering"}]},{"libraryName":"generated.property.enums","start":1067,"end":1143,"specifiers":[{"specifier":"GridDisplayType"}]},{"libraryName":"generated.model","start":1144,"end":1193,"specifiers":[{"specifier":"Filter"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.api.dao.option","start":1194,"end":1288,"specifiers":[{"specifier":"SortOrder"}]},{"libraryName":"decorators","start":1289,"end":1335,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"component","start":1336,"end":1394,"specifiers":[{"specifier":"SelectableComponent"}]},{"libraryName":"component.grid","start":1395,"end":1452,"specifiers":[{"specifier":"WebbpmDatasource"}]},{"libraryName":"util","start":1453,"end":1497,"specifiers":[{"specifier":"GridUtils"}]},{"libraryName":"component.grid.utils","start":1498,"end":1565,"specifiers":[{"specifier":"GridColumnDefUtils"}]},{"libraryName":"component.grid.utils","start":1566,"end":1631,"specifiers":[{"specifier":"GridColumnIdUtils"}]},{"libraryName":"generated.property.grid","start":1632,"end":1697,"specifiers":[{"specifier":"ColumnSort"}]},{"libraryName":"component.grid.utils","start":1698,"end":1773,"specifiers":[{"specifier":"GridValueRendererUtils"}]},{"libraryName":"component.grid.enums","start":1774,"end":1855,"specifiers":[{"specifier":"GridRowClickSelectionType"}]},{"libraryName":"component.grid.enums","start":1856,"end":1931,"specifiers":[{"specifier":"GridLoadingOverlayType"}]},{"libraryName":"component.grid.utils","start":1932,"end":2003,"specifiers":[{"specifier":"GridCellTooltipUtils"}]},{"libraryName":"component.grid.utils","start":2004,"end":2081,"specifiers":[{"specifier":"GridValueFormatterUtils"}]},{"libraryName":"component.grid.menus","start":2082,"end":2151,"specifiers":[{"specifier":"GridContextMenuItem"}]},{"libraryName":"component.grid.selection","start":2152,"end":2217,"specifiers":[{"specifier":"IsRowSelectable"}]},{"libraryName":"component.grid.selection","start":2218,"end":2293,"specifiers":[{"specifier":"GridSelectionService"}]},{"libraryName":"generated.model.grid","start":2294,"end":2350,"specifiers":[{"specifier":"GridRow"}]},{"libraryName":"component.grid.navigation","start":2351,"end":2429,"specifiers":[{"specifier":"GridNavigationService"}]},{"libraryName":"component.grid.utils","start":2430,"end":2507,"specifiers":[{"specifier":"GridColumnKeyboardUtils"}]},{"libraryName":"component.grid.utils","start":2508,"end":2589,"specifiers":[{"specifier":"GridColumnComparatorUtils"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":2590,"end":2642,"specifiers":[{"specifier":"NgbModal"}]},{"libraryName":"component.grid.headers","start":2643,"end":2710,"specifiers":[{"specifier":"GridSettingHeader"}]},{"libraryName":"directive","start":2711,"end":2807,"specifiers":[{"specifier":"GridConfiguratorDialogComponent"}]},{"libraryName":"modules.core.service","start":2808,"end":2890,"specifiers":[{"specifier":"LocalStorageService"}]},{"libraryName":"component.grid.utils","start":2891,"end":2962,"specifiers":[{"specifier":"GridColumnStateUtils"}]},{"libraryName":"modules.bpmn.storage","start":2963,"end":3047,"specifiers":[{"specifier":"PageObjectByIdStorage"}]},{"libraryName":"generated.component.grid.model","start":3048,"end":3120,"specifiers":[{"specifier":"PinnedType"}]},{"libraryName":"component.grid.utils","start":3121,"end":3194,"specifiers":[{"specifier":"GridColumnFilterUtils"}]},{"libraryName":"component.grid","start":3195,"end":3246,"specifiers":[{"specifier":"RussianLocale"}]},{"libraryName":"component.enum","start":3247,"end":3290,"specifiers":[{"specifier":"GridTheme"}]},{"libraryName":"moment-timezone","alias":"moment_","start":3291,"end":3334},{"libraryName":"moment","start":3359,"end":3389,"specifiers":[{"specifier":"Moment"}]},{"libraryName":"util","start":3390,"end":3440,"specifiers":[{"specifier":"DateTimeUtil"}]},{"libraryName":"component.grid.renderers","start":3441,"end":3518,"specifiers":[{"specifier":"GridCellValueRenderer"}]},{"libraryName":"ag-grid-community","start":3519,"end":3568,"specifiers":[{"specifier":"GetRowIdParams"}]},{"libraryName":"ag-grid-community","start":3569,"end":3622,"specifiers":[{"specifier":"RowDataTransaction"}]},{"libraryName":"component.grid.tooltip","start":3623,"end":3684,"specifiers":[{"specifier":"DefaultTooltip"}]},{"libraryName":"component.enum","start":3685,"end":3742,"specifiers":[{"specifier":"GridRowModelType"}]},{"libraryName":"ag-grid-community","start":3743,"end":3789,"specifiers":[{"specifier":"ColumnState"}]},{"libraryName":"util","start":3790,"end":3866,"specifiers":[{"specifier":"UnsupportedOperationError"}]}],"exports":[],"declarations":[{"name":"moment","isConst":true,"isExported":false,"start":3335,"end":3358}],"classes":[{"name":"BaseGrid","isExported":true,"start":3868,"end":39742,"accessors":[],"getters":[{"name":"rowData","visibility":1,"type":"any[]","isAbstract":false,"isStatic":false,"start":8426,"end":8733}],"setters":[{"name":"rowData","visibility":1,"isAbstract":false,"isStatic":false,"start":8737,"end":8993}],"decorators":[],"properties":[{"name":"headerHeight","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":3950,"end":4016,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]}]},{"name":"rowHeight","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":4020,"end":4083,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]}]},{"name":"rowSelection","visibility":2,"isOptional":false,"isStatic":false,"start":4087,"end":4149,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"rowClassRules","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":4153,"end":4210,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"datasource","visibility":2,"type":"WebbpmDatasource","isOptional":false,"isStatic":false,"start":4214,"end":4281,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"maxConcurrentDatasourceRequests","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":4285,"end":4372,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"blockLoadDebounceMillis","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":4376,"end":4452,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"blockSize","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":4456,"end":4512,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"columnDefs","visibility":2,"type":"ColDef[]","isOptional":false,"isStatic":false,"start":4516,"end":4575,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"defaultColDef","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":4579,"end":4636,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"pinnedBottomRowData","visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"start":4640,"end":4710,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"suppressColumnTooltip","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":4714,"end":4791,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"autoStretchColumns","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":4795,"end":4863,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]}]},{"name":"loadingOverlayType","visibility":2,"type":"GridLoadingOverlayType","isOptional":false,"isStatic":false,"start":4867,"end":4939,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"loadingOverlayMessage","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":4944,"end":5119,"decorators":[{"name":"AdvancedProperty","parameters":[]},{"name":"Visible","parameters":["loadingOverlayType == GridLoadingOverlayType.TEXT_OVERLAY"]}]},{"name":"noRowsOverlayMessage","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":5123,"end":5276,"decorators":[{"name":"AdvancedProperty","parameters":[]},{"name":"Visible","parameters":["loadingOverlayType == GridLoadingOverlayType.TEXT_OVERLAY"]}]},{"name":"theme","visibility":2,"type":"GridTheme","isOptional":false,"isStatic":false,"start":5280,"end":5345,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"gridLoaded","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":5349,"end":5439,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"multiselectable","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":5443,"end":5488,"decorators":[{"name":"NotNull","parameters":[]}]},{"name":"checkboxColumn","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":5492,"end":5561,"decorators":[{"name":"Visible","parameters":["multiselectable == true"]}]},{"name":"checkboxHeader","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":5564,"end":5639,"decorators":[{"name":"Visible","parameters":["checkboxColumn == true"]}]},{"name":"pinnedBottomRowLabel","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":5643,"end":5679,"decorators":[]},{"name":"rowClickSelectionType","visibility":2,"type":"GridRowClickSelectionType","isOptional":false,"isStatic":false,"start":5683,"end":5787,"decorators":[]},{"name":"selectionChangeEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":5791,"end":5878,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"cellClickEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":5882,"end":5955,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"rowClickEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":5959,"end":6031,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"rowDoubleClickEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":6035,"end":6113,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"showRowNumber","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6118,"end":6148,"decorators":[]},{"name":"floatingFilter","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6152,"end":6203,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"filter","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6207,"end":6258,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"localeText","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":6262,"end":6305,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"allowContextMenuWithControlKey","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6309,"end":6378,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"saveColumnState","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6382,"end":6444,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"gridConfigurationRowHeight","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":6448,"end":6517,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"tooltipDelay","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":6521,"end":6577,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"enableCellTextSelection","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":6581,"end":6650,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"gridApi","visibility":1,"type":"GridApi","isOptional":false,"isStatic":false,"start":6654,"end":6681,"decorators":[]},{"name":"columnApi","visibility":1,"type":"ColumnApi","isOptional":false,"isStatic":false,"start":6684,"end":6715,"decorators":[]},{"name":"cellClickListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6718,"end":6764,"decorators":[]},{"name":"rowClickListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6767,"end":6812,"decorators":[]},{"name":"rowDoubleClickListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6815,"end":6866,"decorators":[]},{"name":"postLoadListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6869,"end":6914,"decorators":[]},{"name":"columnVisibilityChangedListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6917,"end":6977,"decorators":[]},{"name":"columnResizedListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":6980,"end":7030,"decorators":[]},{"name":"columnMovedListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":7033,"end":7081,"decorators":[]},{"name":"sortChangedListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":7084,"end":7132,"decorators":[]},{"name":"onGridReadyCallbacks","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":7135,"end":7183,"decorators":[]},{"name":"gridSelectionService","visibility":1,"type":"GridSelectionService","isOptional":false,"isStatic":false,"start":7186,"end":7239,"decorators":[]},{"name":"gridNavigationService","visibility":1,"type":"GridNavigationService","isOptional":false,"isStatic":false,"start":7242,"end":7297,"decorators":[]},{"name":"autoStretchColumnsListener","visibility":1,"type":"Function","isOptional":false,"isStatic":false,"start":7300,"end":7389,"decorators":[]},{"name":"destroyCalled","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":7392,"end":7431,"decorators":[]},{"name":"defaultSortModel","visibility":1,"type":"any","isOptional":false,"isStatic":false,"start":7435,"end":7467,"decorators":[]},{"name":"tempRowData","visibility":1,"type":"any[]","isOptional":false,"isStatic":false,"start":7789,"end":7818,"decorators":[]},{"name":"tempTransactions","visibility":1,"type":"RowDataTransaction[]","isOptional":false,"isStatic":false,"start":7821,"end":7875,"decorators":[]},{"name":"initDeferred","visibility":1,"type":"Deferred","isOptional":false,"isStatic":false,"start":7878,"end":7940,"decorators":[]},{"name":"initialized","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":7944,"end":7981,"decorators":[]},{"name":"dependDeferred","visibility":0,"type":"Deferred","isOptional":false,"isStatic":false,"start":7985,"end":8047,"decorators":[]},{"name":"rowSelectable","visibility":0,"type":"IsRowSelectable","isOptional":false,"isStatic":false,"start":8050,"end":8089,"decorators":[]},{"name":"contextMenuItems","visibility":0,"type":"GridContextMenuItem[]","isOptional":false,"isStatic":false,"start":8092,"end":8140,"decorators":[]},{"name":"ngbModal","visibility":0,"type":"NgbModal","isOptional":false,"isStatic":false,"start":8143,"end":8170,"decorators":[]},{"name":"gridConfigurationCache","visibility":0,"type":"PageObjectByIdStorage","isOptional":false,"isStatic":false,"start":8173,"end":8227,"decorators":[]}],"methods":[{"name":"updateRowData","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8997,"end":9186,"decorators":[],"parameters":[{"name":"diff","type":"RowDataTransaction","start":9021,"end":9045}],"variables":[]},{"name":"applyUpdateTransaction","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":9190,"end":9459,"decorators":[],"parameters":[{"name":"diff","type":"RowDataTransaction","start":9223,"end":9247}],"variables":[{"name":"transaction","isConst":false,"isExported":false,"start":9255,"end":9309},{"name":"rowNodesToUpdate","isConst":false,"isExported":false,"start":9314,"end":9381}]},{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":9463,"end":10610,"decorators":[],"parameters":[],"variables":[{"name":"localStorageService","isConst":false,"isExported":false,"start":9824,"end":9889},{"name":"gridConfiguration","isConst":true,"isExported":false,"start":9894,"end":10008},{"name":"grid","isConst":false,"isExported":false,"type":"any","start":10115,"end":10159}]},{"name":"start","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10614,"end":10875,"decorators":[],"parameters":[],"variables":[]},{"name":"reset","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10879,"end":10948,"decorators":[],"parameters":[],"variables":[]},{"name":"getRowModelType","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":10952,"end":10994,"decorators":[],"parameters":[],"variables":[]},{"name":"getGridApi","isAbstract":false,"visibility":2,"type":"GridApi","isOptional":false,"isStatic":false,"isAsync":false,"start":10998,"end":11057,"decorators":[],"parameters":[],"variables":[]},{"name":"getColumnApi","isAbstract":false,"visibility":2,"type":"ColumnApi","isOptional":false,"isStatic":false,"isAsync":false,"start":11061,"end":11126,"decorators":[],"parameters":[],"variables":[]},{"name":"initGrid","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":11130,"end":11548,"decorators":[],"parameters":[],"variables":[]},{"name":"applyConfigurators","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":11552,"end":11761,"decorators":[],"parameters":[],"variables":[{"name":"configurators","isConst":false,"isExported":false,"start":11593,"end":11664}]},{"name":"initDefaultColDef","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":11765,"end":11884,"decorators":[],"parameters":[],"variables":[]},{"name":"initDefaultSortModel","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":11888,"end":12423,"decorators":[],"parameters":[],"variables":[{"name":"columnSorts","isConst":false,"isExported":false,"type":"ColumnSort[]","start":11933,"end":11987},{"name":"columns","isConst":false,"isExported":false,"start":11992,"end":12024}]},{"name":"getColumns","isAbstract":false,"visibility":1,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":12427,"end":12506,"decorators":[],"parameters":[],"variables":[]},{"name":"getColumnSorts","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":12510,"end":12590,"decorators":[],"parameters":[],"variables":[]},{"name":"defaultSortingIsPossible","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":12594,"end":13039,"decorators":[],"parameters":[{"name":"columnSorts","type":"ColumnSort[]","start":12629,"end":12654},{"name":"columns","start":12656,"end":12663}],"variables":[{"name":"columnSortFieldName","isConst":false,"isExported":false,"start":12810,"end":12877}]},{"name":"getColumnsScript","isAbstract":false,"visibility":1,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":13043,"end":13122,"decorators":[],"parameters":[],"variables":[]},{"name":"initColumnDefs","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":13126,"end":13425,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"start":13165,"end":13211},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":13323,"end":13384}]},{"name":"columnToColumnDef","isAbstract":false,"visibility":1,"type":"ColDef","isOptional":false,"isStatic":false,"isAsync":false,"start":13429,"end":17356,"decorators":[],"parameters":[{"name":"column","type":"any","start":13457,"end":13468}],"variables":[{"name":"columnDef","isConst":true,"isExported":false,"type":"ColDef","start":13484,"end":13513},{"name":"type","isConst":false,"isExported":false,"start":14995,"end":15024},{"name":"filterMoment","isConst":false,"isExported":false,"type":"Moment","start":15538,"end":15681},{"name":"cellMoment","isConst":false,"isExported":false,"type":"Moment","start":15698,"end":15766},{"name":"renderer","isConst":true,"isExported":false,"type":"ICellRendererFunc","start":16728,"end":16808}]},{"name":"createRenderer","isAbstract":false,"visibility":1,"type":"(params: ICellRendererParams) => HTMLElement | string","isOptional":false,"isStatic":false,"isAsync":false,"start":17360,"end":17879,"decorators":[],"parameters":[{"name":"column","type":"any","start":17385,"end":17396}],"variables":[{"name":"type","isConst":false,"isExported":false,"start":17459,"end":17488},{"name":"renderer","isConst":false,"isExported":false,"type":"GridCellValueRenderer","start":17493,"end":17727}]},{"name":"initRowNumberConfiguration","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":17883,"end":18090,"decorators":[],"parameters":[],"variables":[{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":17983,"end":18046}]},{"name":"initSelectableConfiguration","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":18094,"end":18411,"decorators":[],"parameters":[],"variables":[{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":18285,"end":18367}]},{"name":"initPinnedBottomRowData","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":18415,"end":18860,"decorators":[],"parameters":[],"variables":[{"name":"pinnedBottomRow","isConst":false,"isExported":false,"start":18532,"end":18557},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":18634,"end":18700}]},{"name":"initRowClasses","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":18864,"end":19329,"decorators":[],"parameters":[],"variables":[]},{"name":"onGridReady","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":19333,"end":20358,"decorators":[],"parameters":[{"name":"event","type":"GridReadyEvent","start":19352,"end":19373}],"variables":[{"name":"allRowNodesToUpdate","isConst":false,"isExported":false,"start":19633,"end":19661},{"name":"transaction","isConst":false,"isExported":false,"start":19709,"end":19760},{"name":"rowsToUpdate","isConst":false,"isExported":false,"start":19767,"end":19830}]},{"name":"autoStretchColumnsIfNeeded","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":20362,"end":20491,"decorators":[],"parameters":[],"variables":[]},{"name":"destroy","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":20496,"end":20852,"decorators":[],"parameters":[],"variables":[]},{"name":"setDisabledByParent","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":20856,"end":21021,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":20876,"end":20890}],"variables":[]},{"name":"onBodyScroll","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":21025,"end":21080,"decorators":[],"parameters":[{"name":"event","type":"BodyScrollEvent","start":21045,"end":21067}],"variables":[]},{"name":"getSelectedRows","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":21084,"end":21190,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getSelectedRowsIds","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":21194,"end":21306,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getSelectedRow","isAbstract":false,"visibility":2,"type":"any | null","isOptional":false,"isStatic":false,"isAsync":false,"start":21310,"end":21419,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getSelectedRowId","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":21423,"end":21555,"decorators":[{"name":"Visible","parameters":[]},{"name":"ExcludeTypeFiltering","parameters":[]}],"parameters":[],"variables":[]},{"name":"getSelectedRowCellValue","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":21559,"end":21883,"decorators":[{"name":"Visible","parameters":[]},{"name":"ExcludeTypeFiltering","parameters":[]}],"parameters":[{"name":"columnOrderNum","type":"number","start":21629,"end":21651}],"variables":[{"name":"selectedRow","isConst":false,"isExported":false,"start":21664,"end":21704},{"name":"colDefIndex","isConst":false,"isExported":false,"start":21709,"end":21763},{"name":"colName","isConst":false,"isExported":false,"start":21768,"end":21817}]},{"name":"getColDefIndex","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":21887,"end":22266,"decorators":[{"name":"Visible","parameters":["false"]}],"parameters":[{"name":"columnOrderNum","type":"number","start":21929,"end":21951}],"variables":[{"name":"colDefIndex","isConst":false,"isExported":false,"start":21959,"end":21996}]},{"name":"getSelectedRowCount","isAbstract":false,"visibility":2,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":22270,"end":22385,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"setMultiselectable","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22389,"end":22559,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"boolean","start":22428,"end":22442}],"variables":[]},{"name":"selectRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22563,"end":22658,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"id","type":"any","start":22593,"end":22600}],"variables":[]},{"name":"selectRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22662,"end":22763,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"ids","type":"any[]","start":22693,"end":22703}],"variables":[]},{"name":"deselectRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22767,"end":22866,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"id","type":"any","start":22799,"end":22806}],"variables":[]},{"name":"deselectRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22870,"end":22975,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"ids","type":"any[]","start":22903,"end":22913}],"variables":[]},{"name":"selectAll","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":22979,"end":23065,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"deselectAll","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":23069,"end":23159,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"isRowSelectableFunc","isAbstract":false,"visibility":2,"type":"Function","isOptional":false,"isStatic":false,"isAsync":false,"start":23163,"end":23272,"decorators":[],"parameters":[],"variables":[]},{"name":"isRowSelectable","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23276,"end":23411,"decorators":[],"parameters":[{"name":"rowNode","type":"IRowNode","start":23302,"end":23319}],"variables":[]},{"name":"isRowMultiSelectWithClick","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23415,"end":23552,"decorators":[],"parameters":[],"variables":[]},{"name":"isSuppressRowClickSelection","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23556,"end":23698,"decorators":[],"parameters":[],"variables":[]},{"name":"isSuppressOverlay","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23702,"end":23818,"decorators":[],"parameters":[],"variables":[]},{"name":"isSuppressLoadingOverlay","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23822,"end":23907,"decorators":[],"parameters":[],"variables":[]},{"name":"isSuppressNoRowsOverlay","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":23911,"end":23995,"decorators":[],"parameters":[],"variables":[]},{"name":"getAllRows","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":23999,"end":24056,"decorators":[],"parameters":[],"variables":[]},{"name":"addRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24060,"end":24160,"decorators":[],"parameters":[{"name":"rows","type":"any[]","start":24075,"end":24086}],"variables":[]},{"name":"addRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24164,"end":24224,"decorators":[],"parameters":[{"name":"row","type":"any","start":24178,"end":24186}],"variables":[]},{"name":"updateRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24228,"end":24331,"decorators":[],"parameters":[{"name":"rows","type":"any[]","start":24246,"end":24257}],"variables":[]},{"name":"updateRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24335,"end":24401,"decorators":[],"parameters":[{"name":"row","type":"any","start":24352,"end":24360}],"variables":[]},{"name":"removeRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24405,"end":24508,"decorators":[],"parameters":[{"name":"rows","type":"any[]","start":24423,"end":24434}],"variables":[]},{"name":"removeRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24512,"end":24578,"decorators":[],"parameters":[{"name":"row","type":"any","start":24529,"end":24537}],"variables":[]},{"name":"reload","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24582,"end":24626,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":24596,"end":24613}],"variables":[]},{"name":"addOnGridReadyCallback","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24630,"end":24737,"decorators":[],"parameters":[{"name":"callback","type":"Function","start":24660,"end":24678}],"variables":[]},{"name":"addCellClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24741,"end":24857,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":24769,"end":24787}],"variables":[]},{"name":"removeCellClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24861,"end":24983,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":24892,"end":24910}],"variables":[]},{"name":"addRowClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":24987,"end":25101,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":25014,"end":25032}],"variables":[]},{"name":"removeRowClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":25105,"end":25225,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":25135,"end":25153}],"variables":[]},{"name":"addRowDoubleClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":25229,"end":25355,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":25262,"end":25280}],"variables":[]},{"name":"removeRowDoubleClickListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":25359,"end":25491,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":25395,"end":25413}],"variables":[]},{"name":"onSelectionChanged","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":25495,"end":25690,"decorators":[],"parameters":[{"name":"event","type":"SelectionChangedEvent","start":25521,"end":25549}],"variables":[]},{"name":"getSelectValue","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":25694,"end":25807,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getSelectValues","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":25811,"end":25929,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"addSelectListener","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":25933,"end":26042,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":25958,"end":25976}],"variables":[]},{"name":"removeSelectListener","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":26046,"end":26161,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":26074,"end":26092}],"variables":[]},{"name":"isMultiselectable","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":26165,"end":26239,"decorators":[],"parameters":[],"variables":[]},{"name":"getDependValue","isAbstract":false,"visibility":2,"type":"Deferred","isOptional":false,"isStatic":false,"isAsync":false,"start":26243,"end":26320,"decorators":[],"parameters":[],"variables":[]},{"name":"addPostLoadListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":26324,"end":26454,"decorators":[],"parameters":[{"name":"onLoadedFunction","type":"Function","start":26351,"end":26377}],"variables":[]},{"name":"removePostLoadListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":26458,"end":26594,"decorators":[],"parameters":[{"name":"onLoadedFunction","type":"Function","start":26488,"end":26514}],"variables":[]},{"name":"onLoadStart","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":26598,"end":26805,"decorators":[],"parameters":[],"variables":[]},{"name":"onLoadEnd","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":26809,"end":27361,"decorators":[],"parameters":[],"variables":[{"name":"rows","isConst":false,"isExported":false,"start":27064,"end":27088}]},{"name":"applyDefaultSortModel","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":27365,"end":28032,"decorators":[],"parameters":[],"variables":[{"name":"indexByColumns","isConst":false,"isExported":false,"start":27595,"end":27653},{"name":"field","isConst":false,"isExported":false,"start":27712,"end":27749}]},{"name":"getDefaultSortsIndexByColumns","isAbstract":false,"visibility":1,"type":"Map","isOptional":false,"isStatic":false,"isAsync":false,"start":28036,"end":28334,"decorators":[],"parameters":[],"variables":[{"name":"defaultSortColumns","isConst":false,"isExported":false,"start":28105,"end":28165},{"name":"indexByColumns","isConst":false,"isExported":false,"start":28170,"end":28217}]},{"name":"onLoadError","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":28338,"end":28549,"decorators":[],"parameters":[{"name":"reason","type":"any","start":28357,"end":28368}],"variables":[]},{"name":"onCellClicked","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":28553,"end":28704,"decorators":[],"parameters":[{"name":"event","type":"CellClickedEvent","start":28574,"end":28597}],"variables":[]},{"name":"fireCellClickedEvent","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":28708,"end":28883,"decorators":[],"parameters":[{"name":"event","type":"CellClickedEvent","start":28739,"end":28762}],"variables":[]},{"name":"onRowClicked","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":28887,"end":29035,"decorators":[],"parameters":[{"name":"event","type":"RowClickedEvent","start":28907,"end":28929}],"variables":[]},{"name":"fireRowClickedEvent","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29039,"end":29220,"decorators":[],"parameters":[{"name":"event","type":"RowClickedEvent","start":29069,"end":29091}],"variables":[]},{"name":"onRowDoubleClicked","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29224,"end":29390,"decorators":[],"parameters":[{"name":"event","type":"RowDoubleClickedEvent","start":29250,"end":29278}],"variables":[]},{"name":"fireRowDoubleClickedEvent","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29394,"end":29599,"decorators":[],"parameters":[{"name":"event","type":"RowDoubleClickedEvent","start":29430,"end":29458}],"variables":[]},{"name":"onSortChanged","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29603,"end":29711,"decorators":[],"parameters":[{"name":"event","type":"SortChangedEvent","start":29624,"end":29647}],"variables":[]},{"name":"addSortChangedListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29715,"end":29861,"decorators":[],"parameters":[{"name":"onSortChangedFunction","type":"Function","start":29745,"end":29776}],"variables":[]},{"name":"removeSortChangedListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":29865,"end":30017,"decorators":[],"parameters":[{"name":"onSortChangedFunction","type":"Function","start":29898,"end":29929}],"variables":[]},{"name":"getColumnIdsToExport","isAbstract":false,"visibility":2,"type":"string[]","isOptional":false,"isStatic":false,"isAsync":false,"start":30021,"end":30080,"decorators":[],"parameters":[],"variables":[]},{"name":"getSortInfo","isAbstract":false,"visibility":2,"type":"SortInfo[]","isOptional":false,"isStatic":false,"isAsync":false,"start":30084,"end":31270,"decorators":[],"parameters":[],"variables":[{"name":"currentSortStateEqualDefault","isConst":false,"isExported":false,"start":30228,"end":30352},{"name":"localStorageColState","isConst":false,"isExported":false,"type":"ColumnState[]","start":30357,"end":30437},{"name":"sortInfo","isConst":false,"isExported":false,"type":"SortInfo","start":30621,"end":30661},{"name":"column","isConst":false,"isExported":false,"start":30670,"end":30724},{"name":"sortInfo","isConst":false,"isExported":false,"type":"SortInfo","start":31029,"end":31069}]},{"name":"onColumnMoved","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":31274,"end":31382,"decorators":[],"parameters":[{"name":"event","type":"ColumnMovedEvent","start":31295,"end":31318}],"variables":[]},{"name":"addColumnMovedListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":31386,"end":31532,"decorators":[],"parameters":[{"name":"onColumnMovedFunction","type":"Function","start":31416,"end":31447}],"variables":[]},{"name":"removeColumnMovedListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":31536,"end":31688,"decorators":[],"parameters":[{"name":"onColumnMovedFunction","type":"Function","start":31569,"end":31600}],"variables":[]},{"name":"getRowIdFunc","isAbstract":false,"visibility":2,"type":"GetRowIdFunc","isOptional":false,"isStatic":false,"isAsync":false,"start":31692,"end":31812,"decorators":[],"parameters":[],"variables":[]},{"name":"getDisplayedRowCount","isAbstract":false,"visibility":2,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":31816,"end":31942,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"setRowHeight","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":31946,"end":32048,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"number","start":31972,"end":31985}],"variables":[]},{"name":"setHeaderHeight","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":32052,"end":32160,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"number","start":32081,"end":32094}],"variables":[]},{"name":"setRowSelection","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":32164,"end":32259,"decorators":[],"parameters":[{"name":"value","type":"string","start":32180,"end":32193}],"variables":[]},{"name":"setDatasource","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":32263,"end":32364,"decorators":[],"parameters":[{"name":"value","type":"WebbpmDatasource","start":32277,"end":32300}],"variables":[]},{"name":"setBlockSize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":32368,"end":32457,"decorators":[],"parameters":[{"name":"value","type":"number","start":32381,"end":32394}],"variables":[]},{"name":"setAutoStretchColumns","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":32461,"end":32620,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":32483,"end":32497}],"variables":[]},{"name":"showColumn","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":32624,"end":32739,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"columnOrderNum","type":"number","start":32655,"end":32677}],"variables":[]},{"name":"hideColumn","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":32743,"end":32859,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"columnOrderNum","type":"number","start":32774,"end":32796}],"variables":[]},{"name":"isColumnVisible","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":32863,"end":33112,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"columnOrderNum","type":"number","start":32899,"end":32921}],"variables":[{"name":"colDefIndex","isConst":false,"isExported":false,"start":32938,"end":32992},{"name":"columnKey","isConst":false,"isExported":false,"start":32997,"end":33048}]},{"name":"setColumnVisible","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":33116,"end":33365,"decorators":[],"parameters":[{"name":"columnOrderNum","type":"number","start":33141,"end":33163},{"name":"visible","type":"boolean","start":33165,"end":33181}],"variables":[{"name":"colDefIndex","isConst":false,"isExported":false,"start":33195,"end":33249},{"name":"columnKey","isConst":false,"isExported":false,"start":33254,"end":33305}]},{"name":"renameColumn","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":33369,"end":33629,"decorators":[{"name":"Visible","parameters":["false"]}],"parameters":[{"name":"columnOrderNum","type":"number","start":33409,"end":33431},{"name":"newHeaderName","type":"string","start":33433,"end":33454}],"variables":[]},{"name":"getContextMenuItemsFunc","isAbstract":false,"visibility":2,"type":"Function","isOptional":false,"isStatic":false,"isAsync":false,"start":33633,"end":33765,"decorators":[],"parameters":[],"variables":[]},{"name":"getContextMenuItems","isAbstract":false,"visibility":1,"type":"(string | MenuItemDef)[]","isOptional":false,"isStatic":false,"isAsync":false,"start":33769,"end":33996,"decorators":[],"parameters":[{"name":"params","type":"GetContextMenuItemsParams","start":33799,"end":33832}],"variables":[]},{"name":"processCellForClipboard","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":34000,"end":34141,"decorators":[],"parameters":[{"name":"params","type":"ProcessCellForExportParams","start":34031,"end":34065}],"variables":[]},{"name":"isInitialized","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":34145,"end":34211,"decorators":[],"parameters":[],"variables":[]},{"name":"setValue","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":34215,"end":35220,"decorators":[],"parameters":[{"name":"rowData","start":34224,"end":34231}],"variables":[{"name":"clientSideSortState","isConst":false,"isExported":false,"type":"any","start":34239,"end":34275},{"name":"rows","isConst":false,"isExported":false,"type":"GridRow[]","start":34823,"end":34873},{"name":"column","isConst":false,"isExported":false,"start":35083,"end":35128}]},{"name":"getLoadingOverlayTemplate","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":35224,"end":35399,"decorators":[],"parameters":[],"variables":[]},{"name":"getNoRowsOverlayTemplate","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":35403,"end":35575,"decorators":[],"parameters":[],"variables":[]},{"name":"getGridConfigurationStorage","isAbstract":false,"visibility":2,"type":"PageObjectByIdStorage","isOptional":false,"isStatic":false,"isAsync":false,"start":35579,"end":35684,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":35688,"end":35904,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":35908,"end":36132,"decorators":[],"parameters":[],"variables":[]},{"name":"openConfigurationDialog","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":36136,"end":37063,"decorators":[],"parameters":[],"variables":[{"name":"configurationDialog","isConst":false,"isExported":false,"start":36175,"end":36253}]},{"name":"onColumnResized","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37067,"end":37181,"decorators":[],"parameters":[{"name":"event","type":"ColumnResizedEvent","start":37090,"end":37115}],"variables":[]},{"name":"addColumnResized","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37185,"end":37331,"decorators":[],"parameters":[{"name":"onColumnResizedFunction","type":"Function","start":37209,"end":37242}],"variables":[]},{"name":"removeColumnResized","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37335,"end":37487,"decorators":[],"parameters":[{"name":"onColumnResizedFunction","type":"Function","start":37362,"end":37395}],"variables":[]},{"name":"onColumnVisibilityChanged","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37491,"end":37625,"decorators":[],"parameters":[{"name":"event","type":"ColumnVisibleEvent","start":37524,"end":37549}],"variables":[]},{"name":"addColumnVisibilityChanged","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37629,"end":37801,"decorators":[],"parameters":[{"name":"onColumnVisibilityFunction","type":"Function","start":37663,"end":37699}],"variables":[]},{"name":"removeColumnVisibilityChanged","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":37805,"end":37983,"decorators":[],"parameters":[{"name":"onColumnVisibilityFunction","type":"Function","start":37842,"end":37878}],"variables":[]},{"name":"loadingEnabled","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":37987,"end":38042,"decorators":[],"parameters":[],"variables":[]},{"name":"getColumnCells","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":38046,"end":38306,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"columnOrderNum","type":"number","start":38081,"end":38103}],"variables":[{"name":"rows","isConst":false,"isExported":false,"start":38118,"end":38147},{"name":"colDefIndex","isConst":false,"isExported":false,"start":38152,"end":38206},{"name":"colName","isConst":false,"isExported":false,"start":38211,"end":38260}]},{"name":"columnStateFromLocalStorageHasSorts","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":38310,"end":38596,"decorators":[],"parameters":[],"variables":[{"name":"columnsState","isConst":false,"isExported":false,"start":38373,"end":38447},{"name":"columnsStateWithSorts","isConst":false,"isExported":false,"start":38452,"end":38547}]},{"name":"getColumnStateFromLocalStorage","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":38600,"end":38896,"decorators":[],"parameters":[],"variables":[{"name":"configuration","isConst":false,"isExported":false,"start":38684,"end":38749}]},{"name":"applyColumnStateFromLocalStorage","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":38900,"end":39130,"decorators":[],"parameters":[],"variables":[{"name":"columnState","isConst":false,"isExported":false,"start":38985,"end":39041}]},{"name":"componentStateChanged","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":39134,"end":39362,"decorators":[],"parameters":[{"name":"$event","type":"ComponentStateChangedEvent","start":39156,"end":39190}],"variables":[]},{"name":"getAllLoadedRowIds","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":39366,"end":39740,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[{"name":"rowModelType","isConst":false,"isExported":false,"start":39420,"end":39462}]}],"extendsClauses":["Control"],"implementsClauses":["SelectableComponent"],"ctor":{"name":"BaseGrid","start":8231,"end":8422,"parameters":[{"name":"el","type":"ElementRef","start":8243,"end":8257},{"name":"cd","type":"ChangeDetectorRef","start":8259,"end":8280}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["moment_","el","ElementRef","cd","ChangeDetectorRef","window","RussianLocale","diff","RowDataTransaction","transaction","rowNodesToUpdate","rowNodes","force","Promise","NgbModal","a","b","localStorageService","LocalStorageService","gridConfiguration","GridColumnStateUtils","PageObjectByIdStorage","grid","$","event","GridSelectionService","GridNavigationService","GridCellTooltipUtils","GridApi","ColumnApi","configurators","configurator","GridConfigurator","resizable","sortable","columnSorts","ColumnSort","columns","columnSort","GridUtils","SortOrder","columnSortFieldName","column","GridColumns","columnDef","ColDef","GridColumnDefUtils","GridSettingHeader","PinnedType","GridDisplayType","params","type","GridColumnFilterUtils","comparator","filterLocalDateAtMidnight","cellValue","filterMoment","Moment","moment","cellMoment","DateTimeUtil","browserDatePicker","GridColumnComparatorUtils","GridValueFormatterUtils","SuppressKeyboardEventParams","GridColumnKeyboardUtils","renderer","ICellRendererFunc","GridValueRendererUtils","DefaultTooltip","ICellRendererParams","HTMLElement","GridCellValueRenderer","undefined","pinnedBottomRow","GridReadyEvent","allRowNodesToUpdate","t","rowsToUpdate","Events","cb","Function","value","BodyScrollEvent","Visible","ExcludeTypeFiltering","columnOrderNum","selectedRow","colDefIndex","colName","id","ids","rowNode","IRowNode","GridRowClickSelectionType","GridLoadingOverlayType","rows","add","remove","update","row","filters","Filter","callback","listener","SelectionChangedEvent","Deferred","onLoadedFunction","indexByColumns","field","Map","defaultSortColumns","Object","index","reason","CellClickedEvent","RowClickedEvent","RowDoubleClickedEvent","SortChangedEvent","onSortChangedFunction","SortInfo","currentSortStateEqualDefault","col","localStorageColState","ColumnState","colState","sortInfo","ColumnMovedEvent","onColumnMovedFunction","GetRowIdFunc","GetRowIdParams","GridColumnIdUtils","WebbpmDatasource","columnKey","visible","newHeaderName","GetContextMenuItemsParams","MenuItemDef","contextMenu","item","ProcessCellForExportParams","rowData","clientSideSortState","GridRowModelType","GridRow","colId","sortOrder","configurationDialog","GridConfiguratorDialogComponent","result","state","applyOrder","ColumnResizedEvent","onColumnResizedFunction","ColumnVisibleEvent","onColumnVisibilityFunction","columnsState","columnsStateWithSorts","configuration","columnState","$event","ComponentStateChangedEvent","rowModelType","UnsupportedOperationError","Control","SelectableComponent","Input","AdvancedProperty","headerHeight","rowHeight","rowSelection","rowClassRules","datasource","maxConcurrentDatasourceRequests","blockLoadDebounceMillis","blockSize","columnDefs","defaultColDef","pinnedBottomRowData","suppressColumnTooltip","autoStretchColumns","loadingOverlayType","loadingOverlayMessage","noRowsOverlayMessage","theme","GridTheme","gridLoaded","Event","NotNull","multiselectable","checkboxColumn","checkboxHeader","pinnedBottomRowLabel","rowClickSelectionType","selectionChangeEvent","cellClickEvent","rowClickEvent","rowDoubleClickEvent","showRowNumber","floatingFilter","filter","localeText","allowContextMenuWithControlKey","saveColumnState","gridConfigurationRowHeight","tooltipDelay","enableCellTextSelection","gridApi","columnApi","cellClickListeners","rowClickListeners","rowDoubleClickListeners","postLoadListeners","columnVisibilityChangedListeners","columnResizedListeners","columnMovedListeners","sortChangedListeners","onGridReadyCallbacks","gridSelectionService","gridNavigationService","autoStretchColumnsListener","destroyCalled","defaultSortModel","tempRowData","tempTransactions","initDeferred","initialized","dependDeferred","rowSelectable","IsRowSelectable","contextMenuItems","GridContextMenuItem","ngbModal","gridConfigurationCache","data"],"packageName":"component"},{"rootPath":"/","start":0,"end":3027,"imports":[{"libraryName":"component","start":0,"end":36,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"@angular/common/http","start":37,"end":85,"specifiers":[{"specifier":"HttpClient"}]},{"libraryName":"modules.bpmn.provider","start":86,"end":165,"specifiers":[{"specifier":"TaskParamsProvider"}]},{"libraryName":"modules.core.service","start":166,"end":260,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"@angular/core","start":261,"end":300,"specifiers":[{"specifier":"Injector"}]},{"libraryName":"common","start":301,"end":357,"specifiers":[{"specifier":"PromiseWrapper"}]},{"libraryName":"common","start":358,"end":413,"specifiers":[{"specifier":"rejectMessage"}]}],"exports":[],"declarations":[],"classes":[{"name":"BaseRpcService","isExported":true,"start":415,"end":3026,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"httpClient","visibility":1,"type":"HttpClient","isOptional":false,"isStatic":false,"start":473,"end":506,"decorators":[]},{"name":"taskParamsProvider","visibility":1,"type":"TaskParamsProvider","isOptional":false,"isStatic":false,"start":509,"end":558,"decorators":[]},{"name":"progressIndicationService","visibility":1,"type":"ProgressIndicationService","isOptional":false,"isStatic":false,"start":561,"end":624,"decorators":[]},{"name":"sharedContext","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":627,"end":653,"decorators":[]},{"name":"promisesToRejectOnDestroyOrReset","visibility":0,"type":"PromiseWrapper[]","isOptional":false,"isStatic":false,"start":656,"end":725,"decorators":[]}],"methods":[{"name":"wrapPromise","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1068,"end":1321,"decorators":[],"parameters":[{"name":"promise","type":"Promise","start":1080,"end":1101}],"variables":[{"name":"promiseWrapper","isConst":false,"isExported":false,"start":1123,"end":1170},{"name":"returnedPromise","isConst":false,"isExported":false,"start":1175,"end":1226}]},{"name":"getSharedContext","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1325,"end":1385,"decorators":[],"parameters":[],"variables":[]},{"name":"getSharedProperty","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1389,"end":1481,"decorators":[],"parameters":[{"name":"propName","type":"string","start":1407,"end":1423}],"variables":[]},{"name":"reset","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1485,"end":1543,"decorators":[],"parameters":[],"variables":[]},{"name":"doRequest","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1547,"end":2316,"decorators":[],"parameters":[{"name":"serviceName","type":"string","start":1560,"end":1579},{"name":"methodName","type":"string","start":1581,"end":1599},{"name":"argTypes","type":"string[]","start":1601,"end":1619},{"name":"args","type":"any[]","start":1621,"end":1632},{"name":"showProgressBar","type":"boolean","start":1649,"end":1674}],"variables":[{"name":"postObj","isConst":false,"isExported":false,"start":1746,"end":1875},{"name":"url","isConst":false,"isExported":false,"start":1979,"end":2090}]},{"name":"prepareArg","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2320,"end":2409,"decorators":[],"parameters":[{"name":"arg","type":"any","start":2331,"end":2339}],"variables":[]},{"name":"destroy","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":2413,"end":2475,"decorators":[],"parameters":[],"variables":[]},{"name":"getRequestAdditionalProps","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":2479,"end":2755,"decorators":[],"parameters":[],"variables":[]},{"name":"promiseReject","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":2877,"end":3024,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":[],"ctor":{"name":"BaseRpcService","start":729,"end":1064,"parameters":[{"name":"pageId","type":"string","start":741,"end":756},{"name":"objectId","type":"string","start":758,"end":775},{"name":"injector","type":"Injector","start":777,"end":796},{"name":"interfaces","type":"any[]","start":798,"end":816}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["pageId","objectId","injector","Injector","interfaces","HttpClient","TaskParamsProvider","ProgressIndicationService","promise","Promise","promiseWrapper","PromiseWrapper","returnedPromise","propName","T","serviceName","methodName","argTypes","args","showProgressBar","arg","postObj","url","JSON","taskInstanceId","processInstanceId","undefined","rejectMessage","Behavior","httpClient","taskParamsProvider","progressIndicationService","sharedContext","promisesToRejectOnDestroyOrReset"],"packageName":"component"},{"rootPath":"/","start":0,"end":976,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":89,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"fakeAsync"},{"specifier":"flush"},{"specifier":"TestBed"}]},{"libraryName":"@angular/forms","start":90,"end":133,"specifiers":[{"specifier":"FormsModule"}]},{"libraryName":"...testing","start":134,"end":182,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"component","start":183,"end":211,"specifiers":[{"specifier":"Text"}]},{"libraryName":"pipe","start":212,"end":271,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":272,"end":325,"specifiers":[{"specifier":"NgbModule"}]}],"exports":[],"declarations":[{"name":"component","isConst":false,"isExported":false,"type":"Text","start":358,"end":378},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":381,"end":417}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["describe","component","Text","fixture","ComponentFixture","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","imports","NgbModule","fakeAsync","flush","it","expect"],"packageName":"component"},{"rootPath":"/","start":0,"end":6518,"imports":[{"libraryName":"@angular/core","start":0,"end":39,"specifiers":[{"specifier":"Injector"}]},{"libraryName":"decorators","start":40,"end":86,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"webbpm.event","start":87,"end":131,"specifiers":[{"specifier":"Event"}]},{"libraryName":"modules.page.model","start":132,"end":217,"specifiers":[{"specifier":"ObjRefInitializerBean"}]},{"libraryName":"component","start":218,"end":256,"specifiers":[{"specifier":"IBehavior"}]},{"libraryName":"util","start":257,"end":303,"specifiers":[{"specifier":"ScriptUtil"}]}],"exports":[],"declarations":[],"classes":[{"name":"Behavior","isExported":true,"start":305,"end":6517,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"injector","visibility":1,"type":"Injector","isOptional":false,"isStatic":false,"start":351,"end":380,"decorators":[]},{"name":"objectId","visibility":1,"type":"string","isOptional":false,"isStatic":false,"start":384,"end":411,"decorators":[]},{"name":"interfaces","visibility":1,"type":"any[]","isOptional":false,"isStatic":false,"start":415,"end":443,"decorators":[]},{"name":"pageId","visibility":1,"type":"string","isOptional":false,"isStatic":false,"start":447,"end":472,"decorators":[]},{"name":"refInitiated","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":476,"end":514,"decorators":[]},{"name":"instantiated","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":518,"end":575,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"context","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":579,"end":619,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"beforeStart","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":675,"end":763,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"objRefInitializers","visibility":1,"type":"ObjRefInitializerBean[]","isOptional":false,"isStatic":false,"start":767,"end":826,"decorators":[]},{"name":"componentScript","visibility":1,"type":"any","isOptional":false,"isStatic":false,"start":830,"end":861,"decorators":[]},{"name":"scripts","visibility":1,"type":"Behavior[]","isOptional":false,"isStatic":false,"start":865,"end":900,"decorators":[]}],"methods":[{"name":"preInitialize","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1140,"end":1198,"decorators":[],"parameters":[],"variables":[]},{"name":"initialize","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1471,"end":1502,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1636,"end":1667,"decorators":[],"parameters":[],"variables":[]},{"name":"start","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1770,"end":1832,"decorators":[],"parameters":[],"variables":[]},{"name":"postStart","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1933,"end":1963,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":1967,"end":1994,"decorators":[],"parameters":[],"variables":[]},{"name":"reset","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1998,"end":2017,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectName","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2096,"end":2231,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectDescription","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2322,"end":2395,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectPath","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2399,"end":2841,"decorators":[],"parameters":[{"name":"relativeParent","type":"any","start":2413,"end":2432}],"variables":[{"name":"path","isConst":false,"isExported":false,"start":2448,"end":2576},{"name":"parentContext","isConst":false,"isExported":false,"start":2581,"end":2625}]},{"name":"getPrototypeId","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2902,"end":3049,"decorators":[],"parameters":[],"variables":[]},{"name":"getComponentRootId","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":3111,"end":3257,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectNameAttr","isAbstract":false,"visibility":0,"type":"string","isOptional":false,"isStatic":true,"isAsync":false,"start":3261,"end":3414,"decorators":[],"parameters":[{"name":"context","type":"any","start":3294,"end":3306},{"name":"attributeName","type":"string","start":3308,"end":3329}],"variables":[]},{"name":"getScriptInChildren","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":3557,"end":3673,"decorators":[],"parameters":[{"name":"_class","type":"any","start":3577,"end":3588}],"variables":[]},{"name":"getScriptsInChildren","isAbstract":false,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":3823,"end":3943,"decorators":[],"parameters":[{"name":"_class","type":"any","start":3844,"end":3855}],"variables":[]},{"name":"getChildScripts","isAbstract":false,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":4113,"end":4223,"decorators":[],"parameters":[{"name":"_class","type":"any","start":4129,"end":4140}],"variables":[]},{"name":"getScript","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":4365,"end":4453,"decorators":[],"parameters":[{"name":"_class","type":"any","start":4375,"end":4386}],"variables":[]},{"name":"getScripts","isAbstract":false,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":4590,"end":4825,"decorators":[],"parameters":[{"name":"_class","type":"any","start":4601,"end":4612}],"variables":[{"name":"result","isConst":false,"isExported":false,"start":4627,"end":4643},{"name":"found","isConst":false,"isExported":false,"start":4689,"end":4741}]},{"name":"getChildComponents","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":4829,"end":4935,"decorators":[],"parameters":[],"variables":[]},{"name":"getScriptInObject","isAbstract":false,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":5106,"end":5226,"decorators":[],"parameters":[{"name":"objectId","type":"string","start":5124,"end":5140},{"name":"_class","type":"any","start":5142,"end":5153}],"variables":[]},{"name":"getPageId","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":5297,"end":5346,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectId","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":5440,"end":5493,"decorators":[],"parameters":[],"variables":[]},{"name":"getContext","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":5566,"end":5621,"decorators":[],"parameters":[],"variables":[]},{"name":"getParentContext","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":5625,"end":5705,"decorators":[],"parameters":[],"variables":[]},{"name":"implementsInterface","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":5709,"end":5814,"decorators":[],"parameters":[{"name":"_interface","type":"string","start":5736,"end":5754}],"variables":[]},{"name":"destroy","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":5818,"end":5865,"decorators":[],"parameters":[],"variables":[]},{"name":"initObjRefs","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":5869,"end":6251,"decorators":[],"parameters":[],"variables":[]},{"name":"setComponentScript","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6255,"end":6332,"decorators":[],"parameters":[{"name":"script","type":"Behavior","start":6274,"end":6290}],"variables":[]},{"name":"markForCheck","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6336,"end":6389,"decorators":[],"parameters":[],"variables":[]},{"name":"setObjRefInitializers","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6393,"end":6515,"decorators":[],"parameters":[{"name":"objRefInitializers","type":"ObjRefInitializerBean[]","start":6415,"end":6458}],"variables":[]}],"extendsClauses":[],"implementsClauses":["IBehavior"],"ctor":{"name":"Behavior","start":904,"end":1136,"parameters":[{"name":"pageId","type":"string","start":916,"end":931},{"name":"objectId","type":"string","start":933,"end":950},{"name":"injector","type":"Injector","start":952,"end":971},{"name":"interfaces","type":"any[]","start":973,"end":991}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["pageId","objectId","injector","Injector","interfaces","returns","relativeParent","path","Behavior","parentContext","context","attributeName","param","_class","ScriptUtil","result","script","found","_interface","initializer","ObjRefInitializerBean","e","console","objRefInitializers","IBehavior","refInitiated","Visible","instantiated","beforeStart","Event","componentScript","scripts"],"packageName":"component"},{"rootPath":"/","start":0,"end":955,"imports":[{"libraryName":"@angular/core","start":0,"end":65,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]},{"libraryName":"@angular/common/http","start":66,"end":114,"specifiers":[{"specifier":"HttpClient"}]},{"libraryName":"component.button","start":115,"end":154,"specifiers":[{"specifier":"Button"}]}],"exports":[],"declarations":[],"classes":[{"name":"ClearSecurityCacheBtn","isExported":true,"start":156,"end":954,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'clear-security-cache-button',\n templateUrl: './../../../src/resources/template/component/button/Button.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n }"]}],"properties":[{"name":"httpClient","visibility":0,"type":"HttpClient","isOptional":false,"isStatic":false,"start":444,"end":475,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":479,"end":574,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":578,"end":952,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Button"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["HttpClient","Promise","reason","console","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Button","httpClient"],"packageName":"component"},{"rootPath":"/","start":0,"end":110,"imports":[{"libraryName":"component","start":0,"end":38,"specifiers":[{"specifier":"IBehavior"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"Collectible","isExported":true,"start":59,"end":109,"accessors":[],"properties":[],"methods":[],"extendsClauses":["IBehavior"],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["IBehavior"],"packageName":"component"},{"rootPath":"/","start":0,"end":6409,"imports":[{"libraryName":"@angular/core","start":0,"end":36,"specifiers":[{"specifier":"Input"}]},{"libraryName":"component.selectize","start":37,"end":93,"specifiers":[{"specifier":"SelectizeBase"}]},{"libraryName":"model","start":94,"end":159,"specifiers":[{"specifier":"StaticComboBoxModel"}]},{"libraryName":"generated.model","start":160,"end":223,"specifiers":[{"specifier":"ComboBoxModel"}]},{"libraryName":"decorators","start":224,"end":270,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"decorators","start":271,"end":335,"specifiers":[{"specifier":"AdvancedProperty"}]},{"libraryName":"component.selectize.enums","start":336,"end":416,"specifiers":[{"specifier":"SelectizeScrollGravity"}]},{"libraryName":"component.selectize.enums","start":417,"end":505,"specifiers":[{"specifier":"SelectizeDropdownDirection"}]},{"libraryName":"util","start":554,"end":602,"specifiers":[{"specifier":"ObjectUtils"}]}],"exports":[],"declarations":[],"classes":[{"name":"ComboBoxBase","isExported":true,"start":635,"end":6408,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"initialValue","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":697,"end":736,"decorators":[{"name":"Input","parameters":[]}]},{"name":"value","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":740,"end":781,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"scrollGravity","visibility":2,"type":"SelectizeScrollGravity","isOptional":false,"isStatic":false,"start":785,"end":885,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"dropdownDirection","visibility":2,"type":"SelectizeDropdownDirection","isOptional":false,"isStatic":false,"start":889,"end":998,"decorators":[{"name":"AdvancedProperty","parameters":[]}]},{"name":"internalValue","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":1002,"end":1062,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"selectize","visibility":1,"type":"Selectize.IApi","isOptional":false,"isStatic":false,"start":1111,"end":1192,"decorators":[]},{"name":"selectizeFieldName","visibility":1,"type":"string","isOptional":false,"isStatic":false,"start":1195,"end":1239,"decorators":[]},{"name":"selectizeMaxItems","visibility":1,"type":"number","isOptional":false,"isStatic":false,"start":1242,"end":1282,"decorators":[]},{"name":"selectizePlugins","visibility":1,"type":"string[] | IPluginOption[] | { [name: string]: any }","isOptional":false,"isStatic":false,"start":1285,"end":1373,"decorators":[]},{"name":"versioningValidationMessage","visibility":1,"type":"string","isOptional":false,"isStatic":false,"start":1377,"end":1423,"decorators":[]}],"methods":[{"name":"ngAfterViewInit","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1427,"end":1505,"decorators":[],"parameters":[],"variables":[]},{"name":"ngOnDestroy","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1509,"end":1583,"decorators":[],"parameters":[],"variables":[]},{"name":"itemShow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1587,"end":1687,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":1616,"end":1629}],"variables":[]},{"name":"itemHide","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1691,"end":1790,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":1720,"end":1733}],"variables":[]},{"name":"setPlaceholder","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1794,"end":2000,"decorators":[],"parameters":[{"name":"value","type":"string","start":1809,"end":1822}],"variables":[]},{"name":"refreshSelectizeOptions","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":2004,"end":2717,"decorators":[],"parameters":[{"name":"silent","type":"boolean","start":2038,"end":2054}],"variables":[{"name":"options","isConst":true,"isExported":false,"start":2062,"end":2099},{"name":"keys","isConst":false,"isExported":false,"start":2126,"end":2173},{"name":"model","isConst":false,"isExported":false,"start":2228,"end":2272},{"name":"modelKeys","isConst":false,"isExported":false,"start":2281,"end":2348}]},{"name":"setSelectizeValue","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2721,"end":3125,"decorators":[],"parameters":[{"name":"value","type":"any","start":2749,"end":2759}],"variables":[]},{"name":"setSelectizeInvalidValue","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3129,"end":3786,"decorators":[],"parameters":[{"name":"model","type":"any","start":3164,"end":3174}],"variables":[{"name":"value","isConst":false,"isExported":false,"start":3244,"end":3281}]},{"name":"initSelectize","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":3790,"end":5296,"decorators":[],"parameters":[],"variables":[{"name":"self","isConst":false,"isExported":false,"start":3822,"end":3838},{"name":"$select","isConst":false,"isExported":false,"start":3843,"end":3897},{"name":"dropDownLabel","isConst":false,"isExported":false,"start":4948,"end":5029}]},{"name":"getDatasource","isAbstract":true,"visibility":1,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":5300,"end":5342,"decorators":[],"parameters":[],"variables":[]},{"name":"changeItemVisibility","isAbstract":true,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":5346,"end":5424,"decorators":[],"parameters":[{"name":"value","type":"string","start":5386,"end":5399},{"name":"hidden","type":"boolean","start":5401,"end":5416}],"variables":[]},{"name":"onChangeSelectize","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":5589,"end":5854,"decorators":[],"parameters":[{"name":"value","start":5617,"end":5622}],"variables":[{"name":"option","isConst":false,"isExported":false,"type":"any","start":5666,"end":5714}]},{"name":"setEnabled","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":5858,"end":6007,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"boolean","start":5882,"end":5896}],"variables":[]},{"name":"setDisabledByParent","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6011,"end":6165,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":6031,"end":6045}],"variables":[]},{"name":"clear","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":6169,"end":6237,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getVersioningValidationMessage","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":6241,"end":6332,"decorators":[],"parameters":[],"variables":[]},{"name":"setInitValue","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":6336,"end":6406,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["SelectizeBase"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["Selectize","IPluginOption","Visible","value","silent","options","keys","Object","i","model","modelKeys","key","option","ObjectUtils","item","self","$select","$","maxItems","placeholder","labelField","searchField","create","closeAfterSelect","blurOnSingleSelect","allowEmptyOption","openOnFocus","valueField","delimiter","highlight","scrollGravity","dropdownDirection","plugins","onChange","onFocus","onBlur","render","escape","dropDownLabel","hidden","Promise","undefined","author","SelectizeBase","Input","initialValue","AdvancedProperty","SelectizeScrollGravity","SelectizeDropdownDirection","internalValue","selectize","IApi","StaticComboBoxModel","ComboBoxModel","selectizeFieldName","selectizeMaxItems","selectizePlugins","name","versioningValidationMessage"],"packageName":"component"},{"rootPath":"/","start":0,"end":1227,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":71,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"TestBed"}]},{"libraryName":"@angular/forms","start":72,"end":115,"specifiers":[{"specifier":"FormsModule"}]},{"libraryName":"...testing","start":116,"end":164,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"component","start":165,"end":193,"specifiers":[{"specifier":"Text"}]},{"libraryName":"pipe","start":194,"end":253,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":254,"end":307,"specifiers":[{"specifier":"NgbModule"}]}],"exports":[],"declarations":[{"name":"component","isConst":false,"isExported":false,"type":"Text","start":339,"end":359},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":362,"end":398},{"name":"oldVisibleState","isConst":false,"isExported":false,"start":831,"end":875}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["describe","component","Text","fixture","ComponentFixture","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","imports","NgbModule","it","oldVisibleState","expect"],"packageName":"component"},{"rootPath":"/","start":0,"end":10782,"imports":[{"libraryName":"component","start":0,"end":46,"specifiers":[{"specifier":"BaseComponent"}]},{"libraryName":"@angular/core","start":47,"end":154,"specifiers":[{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"},{"specifier":"HostBinding"},{"specifier":"Input"},{"specifier":"SimpleChanges"}]},{"libraryName":"webbpm.event","start":155,"end":199,"specifiers":[{"specifier":"Event"}]},{"libraryName":"decorators","start":200,"end":246,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"common","start":247,"end":293,"specifiers":[{"specifier":"Focusable"}]},{"libraryName":"decorators","start":294,"end":358,"specifiers":[{"specifier":"AdvancedProperty"}]},{"libraryName":"decorators","start":359,"end":405,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component","start":406,"end":436,"specifiers":[{"specifier":"Style"}]},{"libraryName":"decorators","start":437,"end":497,"specifiers":[{"specifier":"CssClassEditor"}]},{"libraryName":"component","start":498,"end":534,"specifiers":[{"specifier":"IControl"}]}],"exports":[],"declarations":[],"classes":[{"name":"Control","isExported":true,"start":536,"end":10781,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"visible","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":623,"end":678,"decorators":[{"name":"Input","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"disabled","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":682,"end":731,"decorators":[{"name":"Input","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"tooltip","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":735,"end":769,"decorators":[{"name":"Input","parameters":[]}]},{"name":"style","visibility":2,"type":"Style","isOptional":false,"isStatic":false,"start":773,"end":826,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]}]},{"name":"cssClasses","visibility":2,"type":"string[]","isOptional":false,"isStatic":false,"start":830,"end":916,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]},{"name":"CssClassEditor","parameters":[]}]},{"name":"inheritParent","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":920,"end":990,"decorators":[{"name":"AdvancedProperty","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"hidden","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":994,"end":1062,"decorators":[{"name":"Visible","parameters":["false"]},{"name":"HostBinding","parameters":["hidden"]}]},{"name":"focused","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1066,"end":1110,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"cssClassesStr","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":1114,"end":1163,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"visibleChangeEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":1167,"end":1252,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"disableChangeEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":1256,"end":1341,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"focusEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":1345,"end":1422,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"visibleByParent","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1426,"end":1468,"decorators":[]},{"name":"disabledByParent","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1471,"end":1507,"decorators":[]},{"name":"inheritParentByParent","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1510,"end":1558,"decorators":[]},{"name":"focusListeners","visibility":0,"type":"Function[]","isOptional":false,"isStatic":false,"start":1562,"end":1602,"decorators":[]},{"name":"blurListeners","visibility":0,"type":"Function[]","isOptional":false,"isStatic":false,"start":1605,"end":1644,"decorators":[]},{"name":"savedDisabledState","visibility":0,"isOptional":false,"isStatic":false,"start":1647,"end":1674,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1757,"end":2076,"decorators":[],"parameters":[],"variables":[{"name":"nativeCssClasses","isConst":false,"isExported":false,"type":"string[]","start":1800,"end":1886}]},{"name":"ngOnChanges","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2080,"end":2601,"decorators":[],"parameters":[{"name":"changes","type":"SimpleChanges","start":2092,"end":2114}],"variables":[{"name":"injectBeanChanged","isConst":false,"isExported":false,"start":2160,"end":2218}]},{"name":"refreshStyles","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2605,"end":3395,"decorators":[],"parameters":[],"variables":[]},{"name":"joinCssClassesAsAttribute","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3399,"end":3581,"decorators":[],"parameters":[],"variables":[]},{"name":"addCssClass","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3585,"end":3807,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"cssClass","type":"string","start":3617,"end":3633}],"variables":[]},{"name":"removeCssClass","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3811,"end":4069,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"cssClass","type":"string","start":3846,"end":3862}],"variables":[]},{"name":"focus","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":4073,"end":4113,"decorators":[],"parameters":[],"variables":[]},{"name":"setInheritParentByParent","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":4117,"end":4238,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":4149,"end":4163}],"variables":[]},{"name":"inheritParentProps","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":4242,"end":4348,"decorators":[],"parameters":[],"variables":[]},{"name":"setEnabled","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":4352,"end":4516,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"enabled","type":"boolean","start":4383,"end":4399}],"variables":[]},{"name":"isEnabled","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":4520,"end":4664,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"isVisible","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":4668,"end":4806,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"saveDisabledState","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4810,"end":4953,"decorators":[],"parameters":[],"variables":[]},{"name":"getTooltip","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":4957,"end":5028,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getTooltipOrEmpty","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":5032,"end":5135,"decorators":[],"parameters":[],"variables":[]},{"name":"restoreDisableState","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":5139,"end":5313,"decorators":[],"parameters":[],"variables":[]},{"name":"setVisible","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":5317,"end":5600,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"boolean","start":5341,"end":5355}],"variables":[{"name":"oldVisibilityState","isConst":false,"isExported":false,"start":5363,"end":5405}]},{"name":"setTooltip","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":5604,"end":5702,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":5628,"end":5641}],"variables":[]},{"name":"setCssClasses","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":5706,"end":5837,"decorators":[],"parameters":[{"name":"value","type":"string[]","start":5720,"end":5735}],"variables":[]},{"name":"setStyle","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":5841,"end":5947,"decorators":[],"parameters":[{"name":"value","type":"Style","start":5850,"end":5862}],"variables":[]},{"name":"getFocusElement","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":6109,"end":6199,"decorators":[],"parameters":[],"variables":[]},{"name":"setFocused","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6271,"end":6653,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"boolean","start":6295,"end":6309}],"variables":[{"name":"focusElement","isConst":false,"isExported":false,"start":6317,"end":6359}]},{"name":"isFocused","isAbstract":false,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":6703,"end":6767,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"setVisibleByParent","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":6771,"end":7055,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":6790,"end":6804}],"variables":[{"name":"oldVisibilityState","isConst":false,"isExported":false,"start":6812,"end":6854}]},{"name":"setDisabledByParent","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":7059,"end":7163,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":7079,"end":7093}],"variables":[]},{"name":"getControl","isAbstract":false,"type":"Control","isOptional":false,"isStatic":false,"isAsync":false,"start":7220,"end":7264,"decorators":[],"parameters":[],"variables":[]},{"name":"onFocus","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":7324,"end":7457,"decorators":[],"parameters":[],"variables":[]},{"name":"onBlur","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":7517,"end":7650,"decorators":[],"parameters":[],"variables":[]},{"name":"removeListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":7654,"end":7853,"decorators":[],"parameters":[{"name":"onEventFunction","type":"Function","start":7676,"end":7701},{"name":"listeners","type":"Function[]","start":7703,"end":7724}],"variables":[{"name":"idx","isConst":false,"isExported":false,"type":"number","start":7738,"end":7791}]},{"name":"addListener","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":7857,"end":7968,"decorators":[],"parameters":[{"name":"onEventFunction","type":"Function","start":7876,"end":7901},{"name":"listeners","type":"Function[]","start":7903,"end":7924}],"variables":[]},{"name":"applyListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":7972,"end":8090,"decorators":[],"parameters":[{"name":"listeners","type":"Function[]","start":7993,"end":8014}],"variables":[]},{"name":"addFocusListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8094,"end":8216,"decorators":[],"parameters":[{"name":"onFocusFunction","type":"Function","start":8118,"end":8143}],"variables":[]},{"name":"removeFocusListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8220,"end":8348,"decorators":[],"parameters":[{"name":"onFocusFunction","type":"Function","start":8247,"end":8272}],"variables":[]},{"name":"addBlurListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8352,"end":8470,"decorators":[],"parameters":[{"name":"onBlurFunction","type":"Function","start":8375,"end":8399}],"variables":[]},{"name":"removeBlurListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8474,"end":8598,"decorators":[],"parameters":[{"name":"onBlurFunction","type":"Function","start":8500,"end":8524}],"variables":[]},{"name":"isBooleanValue","isAbstract":false,"visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":8602,"end":8703,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":8627,"end":8641}],"variables":[]},{"name":"cloneStyle","isAbstract":false,"visibility":0,"type":"Style","isOptional":false,"isStatic":false,"isAsync":false,"start":8707,"end":8912,"decorators":[],"parameters":[],"variables":[{"name":"clone","isConst":false,"isExported":false,"start":8741,"end":8765}]},{"name":"setPadding","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8916,"end":9074,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"padding","type":"string","start":8947,"end":8962}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":8976,"end":9009}]},{"name":"setMargin","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9078,"end":9232,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"margin","type":"string","start":9108,"end":9122}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9136,"end":9169}]},{"name":"setBorder","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9236,"end":9390,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"border","type":"string","start":9266,"end":9280}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9294,"end":9327}]},{"name":"setHeight","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9394,"end":9548,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"height","type":"string","start":9424,"end":9438}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9452,"end":9485}]},{"name":"setWidth","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9552,"end":9702,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"width","type":"string","start":9581,"end":9594}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9608,"end":9641}]},{"name":"setMinHeight","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9706,"end":9872,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"minHeight","type":"string","start":9739,"end":9756}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9770,"end":9803}]},{"name":"setMinWidth","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9876,"end":10038,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"minWidth","type":"string","start":9908,"end":9924}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":9938,"end":9971}]},{"name":"setMaxHeight","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10042,"end":10208,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"maxHeight","type":"string","start":10075,"end":10092}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":10106,"end":10139}]},{"name":"setMaxWidth","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10212,"end":10374,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"maxWidth","type":"string","start":10244,"end":10260}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":10274,"end":10307}]},{"name":"setStretch","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10378,"end":10537,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"stretch","type":"boolean","start":10409,"end":10425}],"variables":[{"name":"newStyle","isConst":false,"isExported":false,"start":10439,"end":10472}]},{"name":"setInitValue","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10651,"end":10677,"decorators":[],"parameters":[],"variables":[]},{"name":"hasCssClass","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":10681,"end":10779,"decorators":[],"parameters":[{"name":"cssClass","type":"string","start":10700,"end":10716}],"variables":[]}],"extendsClauses":["BaseComponent"],"implementsClauses":["Focusable","IControl"],"ctor":{"name":"Control","start":1678,"end":1753,"parameters":[{"name":"el","type":"ElementRef","start":1690,"end":1704},{"name":"cd","type":"ChangeDetectorRef","start":1706,"end":1727}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","nativeCssClasses","Array","cssClass","changes","SimpleChanges","injectBeanChanged","Visible","css","value","enabled","oldVisibilityState","Style","focusElement","Control","onEventFunction","Function","listeners","idx","key","onFocusFunction","onBlurFunction","clone","Object","padding","newStyle","margin","border","height","width","minHeight","minWidth","maxHeight","maxWidth","stretch","BaseComponent","Focusable","IControl","Input","NotNull","visible","disabled","tooltip","AdvancedProperty","style","CssClassEditor","cssClasses","inheritParent","HostBinding","hidden","focused","cssClassesStr","visibleChangeEvent","Event","disableChangeEvent","focusEvent","visibleByParent","disabledByParent","inheritParentByParent","focusListeners","blurListeners","savedDisabledState"],"packageName":"component"},{"rootPath":"/","start":0,"end":1198,"imports":[{"libraryName":"component","start":0,"end":34,"specifiers":[{"specifier":"Control"}]},{"libraryName":"component","start":35,"end":77,"specifiers":[{"specifier":"Collectible"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"ControlWithValue","isExported":true,"start":150,"end":1197,"accessors":[],"properties":[],"methods":[{"name":"getValue","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":209,"end":225,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":254,"end":276,"decorators":[],"parameters":[],"variables":[]},{"name":"getTextValue","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":383,"end":406,"decorators":[],"parameters":[],"variables":[]},{"name":"getValueForForm","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":410,"end":433,"decorators":[],"parameters":[],"variables":[]},{"name":"getPresentationValue","isAbstract":true,"visibility":2,"type":"string | number | boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":583,"end":633,"decorators":[],"parameters":[],"variables":[]},{"name":"setValue","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":637,"end":658,"decorators":[],"parameters":[{"name":"value","type":"any","start":646,"end":656}],"variables":[]},{"name":"clearValue","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":734,"end":747,"decorators":[],"parameters":[],"variables":[]},{"name":"resetValue","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":824,"end":843,"decorators":[],"parameters":[],"variables":[]},{"name":"isCollectible","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":847,"end":872,"decorators":[],"parameters":[],"variables":[]},{"name":"onChange","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":876,"end":893,"decorators":[],"parameters":[],"variables":[]},{"name":"addChangeListener","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":897,"end":949,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":915,"end":941}],"variables":[]},{"name":"removeChangeListener","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":953,"end":1008,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":974,"end":1000}],"variables":[]},{"name":"getControl","isAbstract":true,"visibility":2,"type":"Control","isOptional":false,"isStatic":false,"isAsync":false,"start":1012,"end":1034,"decorators":[],"parameters":[],"variables":[]},{"name":"isPristine","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1078,"end":1100,"decorators":[],"parameters":[],"variables":[]},{"name":"getValueAsModel","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1119,"end":1142,"decorators":[],"parameters":[],"variables":[]},{"name":"setInitValue","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1146,"end":1167,"decorators":[],"parameters":[],"variables":[]},{"name":"isValueEmpty","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1171,"end":1195,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Collectible"],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["author","Collectible","getValue","getObjectId","getTextValue","getValueForForm","getPresentationValue","setValue","value","clearValue","resetValue","isCollectible","onChange","addChangeListener","onChangeFunction","Function","removeChangeListener","getControl","Control","isPristine","getValueAsModel","setInitValue","isValueEmpty"],"packageName":"component"},{"rootPath":"/","start":29,"end":116,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"CustomLoadingComponent","isExported":true,"start":29,"end":115,"accessors":[],"properties":[],"methods":[{"name":"setKeyValue","isAbstract":true,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":74,"end":113,"decorators":[],"parameters":[{"name":"value","type":"any","start":86,"end":96}],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["author","setKeyValue","value","Promise"],"packageName":"component"},{"rootPath":"/","start":0,"end":1023,"imports":[{"libraryName":"component","start":0,"end":36,"specifiers":[{"specifier":"Behavior"}]},{"libraryName":"component.field","start":37,"end":83,"specifiers":[{"specifier":"SelectBase"}]},{"libraryName":"component","start":84,"end":112,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"decorators","start":113,"end":159,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"decorators","start":160,"end":210,"specifiers":[{"specifier":"ObjectRef"}]},{"libraryName":"util","start":211,"end":257,"specifiers":[{"specifier":"FilterUtil"}]}],"exports":[],"declarations":[],"classes":[{"name":"DependentOnFieldGrid","isExported":true,"start":259,"end":1022,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"dependsOn","visibility":2,"type":"SelectBase","isOptional":false,"isStatic":false,"start":315,"end":372,"decorators":[{"name":"ObjectRef","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"grid","visibility":0,"type":"Grid","isOptional":false,"isStatic":false,"start":376,"end":395,"decorators":[]},{"name":"onSelectFunction","visibility":0,"type":"Function","isOptional":false,"isStatic":false,"start":398,"end":433,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":437,"end":778,"decorators":[],"parameters":[],"variables":[{"name":"filter","isConst":false,"isExported":false,"start":655,"end":734}]},{"name":"bindEvents","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":782,"end":898,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":902,"end":1020,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Behavior"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["Grid","selectedValueId","filter","FilterUtil","Behavior","ObjectRef","NotNull","dependsOn","SelectBase","grid","onSelectFunction","Function"],"packageName":"component"},{"rootPath":"/","start":0,"end":4994,"imports":[{"libraryName":"bootstrap","start":0,"end":19},{"libraryName":"@angular/core","start":20,"end":135,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component.container","start":136,"end":184,"specifiers":[{"specifier":"Container"}]},{"libraryName":"decorators","start":185,"end":231,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"decorators","start":232,"end":278,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"webbpm.event","start":279,"end":323,"specifiers":[{"specifier":"Event"}]},{"libraryName":"component.container","start":324,"end":394,"specifiers":[{"specifier":"ValidatableContainer"}]},{"libraryName":"component","start":395,"end":429,"specifiers":[{"specifier":"IWindow"}]}],"exports":[],"declarations":[],"classes":[{"name":"Dialog","isExported":true,"start":431,"end":4993,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'webbpm-dialog',\n templateUrl: './../../../src/resources/template/component/Dialog.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n }"]}],"properties":[{"name":"title","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":706,"end":738,"decorators":[{"name":"Input","parameters":[]}]},{"name":"closable","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":742,"end":791,"decorators":[{"name":"Input","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"visible","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":795,"end":850,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"showDialogEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":888,"end":964,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"hideDialogEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":968,"end":1044,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"resetValidationStatus","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1048,"end":1107,"decorators":[{"name":"Visible","parameters":[]}]},{"name":"showListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":1111,"end":1152,"decorators":[]},{"name":"hideListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":1155,"end":1196,"decorators":[]},{"name":"isDestroyed","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":1248,"end":1285,"decorators":[]},{"name":"_actionInProgress","visibility":0,"isOptional":false,"isStatic":false,"start":1289,"end":1323,"decorators":[]},{"name":"_nextActionQueue","visibility":0,"isOptional":false,"isStatic":false,"start":1326,"end":1356,"decorators":[]}],"methods":[{"name":"refreshStyles","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1439,"end":1523,"decorators":[],"parameters":[],"variables":[]},{"name":"show","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1527,"end":1781,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"isDlgShown","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":1785,"end":1877,"decorators":[],"parameters":[],"variables":[]},{"name":"hide","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1881,"end":2358,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[{"name":"shown","isConst":false,"isExported":false,"start":1920,"end":1950}]},{"name":"safeModal","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2362,"end":3819,"decorators":[],"parameters":[{"name":"action","start":2380,"end":2386}],"variables":[{"name":"modal","isConst":true,"isExported":false,"start":2400,"end":2451},{"name":"futureAction","isConst":true,"isExported":false,"start":2594,"end":2640},{"name":"postEventName","isConst":true,"isExported":false,"start":3085,"end":3137},{"name":"clearInProgress","isConst":false,"isExported":false,"start":3178,"end":3744},{"name":"futureAction","isConst":true,"isExported":false,"start":3417,"end":3463},{"name":"next","isConst":true,"isExported":false,"start":3624,"end":3667}]},{"name":"getPostEventName","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":3824,"end":3969,"decorators":[],"parameters":[{"name":"action","type":"string","start":3848,"end":3862}],"variables":[{"name":"prefix","isConst":true,"isExported":false,"start":3878,"end":3932}]},{"name":"addShowListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3973,"end":4091,"decorators":[],"parameters":[{"name":"onShowFunction","type":"Function","start":3996,"end":4020}],"variables":[]},{"name":"removeShowListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4095,"end":4219,"decorators":[],"parameters":[{"name":"onShowFunction","type":"Function","start":4121,"end":4145}],"variables":[]},{"name":"addHideListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4223,"end":4341,"decorators":[],"parameters":[{"name":"onHideFunction","type":"Function","start":4246,"end":4270}],"variables":[]},{"name":"removeHideListener","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4345,"end":4469,"decorators":[],"parameters":[{"name":"onHideFunction","type":"Function","start":4371,"end":4395}],"variables":[]},{"name":"setVisible","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":4473,"end":4584,"decorators":[],"parameters":[{"name":"visible","type":"boolean","start":4484,"end":4500}],"variables":[]},{"name":"setTitle","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":4588,"end":4682,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":4610,"end":4623}],"variables":[]},{"name":"setClosable","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":4686,"end":4774,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":4698,"end":4712}],"variables":[]},{"name":"reset","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4778,"end":4833,"decorators":[],"parameters":[],"variables":[]},{"name":"ngOnDestroy","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4837,"end":4991,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Container"],"implementsClauses":["IWindow"],"ctor":{"name":"Dialog","start":1360,"end":1435,"parameters":[{"name":"el","type":"ElementRef","start":1372,"end":1386},{"name":"cd","type":"ChangeDetectorRef","start":1388,"end":1409}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Visible","$","shown","ValidatableContainer","component","action","modal","i","futureAction","postEventName","clearInProgress","next","prefix","onShowFunction","Function","onHideFunction","visible","value","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Container","IWindow","Input","title","NotNull","closable","showDialogEvent","Event","hideDialogEvent","resetValidationStatus","showListeners","hideListeners","isDestroyed","_actionInProgress","_nextActionQueue"],"packageName":"component"},{"rootPath":"/","start":0,"end":10362,"imports":[{"libraryName":"common","start":0,"end":48,"specifiers":[{"specifier":"Filterable"}]},{"libraryName":"component","start":49,"end":85,"specifiers":[{"specifier":"BaseGrid"}]},{"libraryName":"generated.model","start":86,"end":135,"specifiers":[{"specifier":"Filter"}]},{"libraryName":"component","start":136,"end":194,"specifiers":[{"specifier":"SelectableComponent"}]},{"libraryName":"component.grid","start":195,"end":258,"specifiers":[{"specifier":"EmptyDataDatasource"}]},{"libraryName":"component.filter","start":259,"end":318,"specifiers":[{"specifier":"ClientFilterGrid"}]},{"libraryName":"component.filter","start":319,"end":378,"specifiers":[{"specifier":"BaseClientFilter"}]},{"libraryName":"component.grid","start":379,"end":448,"specifiers":[{"specifier":"GridFilterableOnClient"}]},{"libraryName":"decorators","start":449,"end":499,"specifiers":[{"specifier":"ObjectRef"}]},{"libraryName":"util","start":500,"end":546,"specifiers":[{"specifier":"FilterUtil"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.bean.filter","start":547,"end":654,"specifiers":[{"specifier":"FilterOperation"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.bean.entity_graph.condition","start":655,"end":764,"specifiers":[{"specifier":"Operator"}]},{"libraryName":"generated.model","start":765,"end":824,"specifiers":[{"specifier":"FilterModel"}]},{"libraryName":"decorators","start":825,"end":871,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"generated.model.grid","start":872,"end":930,"specifiers":[{"specifier":"SortInfo"}]},{"libraryName":"generated.model","start":931,"end":986,"specifiers":[{"specifier":"FileModel"}]},{"libraryName":"util","start":987,"end":1031,"specifiers":[{"specifier":"FileUtils"}]},{"libraryName":"generated.model.grid","start":1032,"end":1114,"specifiers":[{"specifier":"GridDataExportFormat"}]},{"libraryName":"generated.rpc","start":1115,"end":1178,"specifiers":[{"specifier":"GridRpcService"}]},{"libraryName":"moment-timezone","alias":"moment_","start":1179,"end":1222},{"libraryName":"@angular/core","start":1247,"end":1307,"specifiers":[{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"}]}],"exports":[],"declarations":[{"name":"moment","isConst":true,"isExported":false,"start":1223,"end":1246}],"classes":[{"name":"DynamicDataGrid","isExported":true,"start":1309,"end":10361,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"parentControl","visibility":2,"type":"SelectableComponent","isOptional":false,"isStatic":false,"start":1431,"end":1488,"decorators":[{"name":"ObjectRef","parameters":[]}]},{"name":"filterMap","visibility":1,"type":"{ [key: string]: Filter }","isOptional":false,"isStatic":false,"start":1492,"end":1544,"decorators":[]},{"name":"loadOnInit","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1547,"end":1577,"decorators":[]},{"name":"reloadNeeded","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1580,"end":1620,"decorators":[]},{"name":"started","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1623,"end":1658,"decorators":[]},{"name":"loadEnabled","visibility":1,"type":"boolean","isOptional":false,"isStatic":false,"start":1661,"end":1699,"decorators":[]},{"name":"onSelectFunction","visibility":1,"type":"Function","isOptional":false,"isStatic":false,"start":1702,"end":1739,"decorators":[]},{"name":"$","visibility":1,"type":"GridRpcService","isOptional":false,"isStatic":false,"start":1742,"end":1770,"decorators":[]}],"methods":[{"name":"initGrid","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1853,"end":2125,"decorators":[],"parameters":[],"variables":[]},{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":2129,"end":2245,"decorators":[],"parameters":[],"variables":[]},{"name":"start","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2249,"end":2409,"decorators":[],"parameters":[],"variables":[]},{"name":"reset","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2413,"end":2505,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2509,"end":2671,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2675,"end":2844,"decorators":[],"parameters":[],"variables":[]},{"name":"refresh","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2848,"end":2998,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"refreshData","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3002,"end":3038,"decorators":[],"parameters":[],"variables":[]},{"name":"reload","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3043,"end":3903,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":3057,"end":3079}],"variables":[{"name":"filter","isConst":false,"isExported":false,"start":3561,"end":3779}]},{"name":"searchClientFilter","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":3907,"end":4477,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":3934,"end":3956}],"variables":[{"name":"model","isConst":false,"isExported":false,"start":3964,"end":3979},{"name":"clientFilterGrid","isConst":false,"isExported":false,"type":"ClientFilterGrid","start":4018,"end":4132}]},{"name":"saveFiltersToMap","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4481,"end":4601,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":4506,"end":4523}],"variables":[]},{"name":"addFilter","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4605,"end":4693,"decorators":[],"parameters":[{"name":"filter","type":"Filter","start":4615,"end":4629}],"variables":[]},{"name":"removeFilter","isAbstract":false,"type":"Filter","isOptional":false,"isStatic":false,"isAsync":false,"start":4697,"end":4822,"decorators":[],"parameters":[{"name":"guid","type":"string","start":4710,"end":4722}],"variables":[{"name":"ret","isConst":false,"isExported":false,"start":4738,"end":4769}]},{"name":"getFilters","isAbstract":false,"type":"Filter[]","isOptional":false,"isStatic":false,"isAsync":false,"start":4826,"end":5025,"decorators":[],"parameters":[],"variables":[{"name":"fieldComponentFilters","isConst":false,"isExported":false,"start":4855,"end":4913},{"name":"columnFilters","isConst":false,"isExported":false,"start":4918,"end":4961}]},{"name":"getColumnFilters","isAbstract":false,"visibility":0,"type":"Filter[]","isOptional":false,"isStatic":false,"isAsync":false,"start":5029,"end":6166,"decorators":[],"parameters":[],"variables":[{"name":"filterModel","isConst":false,"isExported":false,"start":5072,"end":5120},{"name":"columnFilters","isConst":false,"isExported":false,"start":5229,"end":5252},{"name":"colDef","isConst":false,"isExported":false,"start":5325,"end":5372},{"name":"columnUid","isConst":false,"isExported":false,"start":5402,"end":5438},{"name":"filter","isConst":false,"isExported":false,"start":5447,"end":5473},{"name":"agFilterElement1","isConst":false,"isExported":false,"type":"any","start":5760,"end":5811},{"name":"agFilterElement2","isConst":false,"isExported":false,"type":"any","start":5822,"end":5873}]},{"name":"createFilter","isAbstract":false,"visibility":0,"type":"Filter","isOptional":false,"isStatic":false,"isAsync":false,"start":6170,"end":6442,"decorators":[],"parameters":[{"name":"operator","type":"Operator","start":6191,"end":6209},{"name":"componentGuid","type":"string","start":6211,"end":6232},{"name":"filterModels","type":"FilterModel[]","start":6234,"end":6261}],"variables":[{"name":"filter","isConst":true,"isExported":false,"start":6277,"end":6305}]},{"name":"addFilterCondition","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":6446,"end":8807,"decorators":[],"parameters":[{"name":"filter","type":"Filter","start":6473,"end":6487},{"name":"agFilter","type":"any","start":6489,"end":6502}],"variables":[{"name":"filterModel","isConst":false,"isExported":false,"start":6557,"end":6593},{"name":"filterToModel","isConst":false,"isExported":false,"start":6785,"end":6823},{"name":"filterFromModel","isConst":false,"isExported":false,"start":7288,"end":7328},{"name":"dateFrom","isConst":false,"isExported":false,"start":7335,"end":7378},{"name":"filterToModel","isConst":false,"isExported":false,"start":7508,"end":7546},{"name":"dateTo","isConst":false,"isExported":false,"start":7578,"end":7623},{"name":"filterModel","isConst":false,"isExported":false,"start":7950,"end":7986}]},{"name":"disableInitialLoading","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":8811,"end":8912,"decorators":[],"parameters":[],"variables":[]},{"name":"loadingEnabled","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":8916,"end":9016,"decorators":[],"parameters":[],"variables":[]},{"name":"setLoadEnabled","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9020,"end":9099,"decorators":[],"parameters":[{"name":"value","type":"boolean","start":9042,"end":9056}],"variables":[]},{"name":"isDependentGrid","isAbstract":false,"visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":9103,"end":9182,"decorators":[],"parameters":[],"variables":[]},{"name":"clear","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":9186,"end":9550,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"exportAsXls","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":9554,"end":9629,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"exportAsXlsx","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":9633,"end":9710,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"exportAsCsv","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":9714,"end":9789,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"export","isAbstract":false,"visibility":0,"isOptional":false,"isStatic":false,"isAsync":false,"start":9845,"end":10238,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"format","type":"GridDataExportFormat","start":9873,"end":9901}],"variables":[{"name":"filters","isConst":false,"isExported":false,"type":"Filter[]","start":9909,"end":9951},{"name":"sortInfo","isConst":false,"isExported":false,"type":"SortInfo[]","start":9956,"end":10002},{"name":"columnIdsToExport","isConst":false,"isExported":false,"type":"string[]","start":10007,"end":10069}]},{"name":"clearColumnFilters","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":10242,"end":10359,"decorators":[{"name":"Visible","parameters":["true"]}],"parameters":[],"variables":[]}],"extendsClauses":["BaseGrid"],"implementsClauses":["Filterable"],"ctor":{"name":"DynamicDataGrid","start":1774,"end":1849,"parameters":[{"name":"el","type":"ElementRef","start":1786,"end":1800},{"name":"cd","type":"ChangeDetectorRef","start":1802,"end":1823}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["moment_","el","ElementRef","cd","ChangeDetectorRef","Promise","GridRpcService","Visible","filters","Filter","GridFilterableOnClient","filter","BaseClientFilter","FilterUtil","FilterOperation","model","clientFilterGrid","ClientFilterGrid","filterModel","type","guid","ret","fieldComponentFilters","Object","columnFilters","column","agFilter","colDef","columnUid","Operator","agFilterElement1","agFilterElement2","operator","componentGuid","filterModels","FilterModel","Date","filterToModel","filterFromModel","dateFrom","dateTo","moment","value","EmptyDataDatasource","GridDataExportFormat","format","sortInfo","SortInfo","columnIdsToExport","file","FileModel","FileUtils","BaseGrid","Filterable","ObjectRef","parentControl","SelectableComponent","filterMap","key","loadOnInit","reloadNeeded","started","loadEnabled","onSelectFunction","Function","$"],"packageName":"component"},{"rootPath":"/","start":0,"end":711,"imports":[{"libraryName":"@angular/core","start":0,"end":96,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"}]},{"libraryName":"component","start":97,"end":143,"specifiers":[{"specifier":"BaseComponent"}]},{"libraryName":"decorators","start":144,"end":196,"specifiers":[{"specifier":"Deprecated"}]}],"exports":[],"declarations":[],"classes":[{"name":"EmptyComponent","isExported":true,"start":404,"end":710,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Deprecated","parameters":[]},{"name":"Component","parameters":["{\n selector: 'empty',\n templateUrl: './../../../src/resources/template/component/Empty.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[],"extendsClauses":["BaseComponent"],"implementsClauses":[],"ctor":{"name":"EmptyComponent","start":633,"end":708,"parameters":[{"name":"el","type":"ElementRef","start":645,"end":659},{"name":"cd","type":"ChangeDetectorRef","start":661,"end":682}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Deprecated","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","BaseComponent"],"packageName":"component"},{"rootPath":"/","start":0,"end":453,"imports":[{"libraryName":"component","start":0,"end":34,"specifiers":[{"specifier":"Control"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"FormValue","isExported":true,"start":65,"end":452,"accessors":[],"properties":[],"methods":[{"name":"getValue","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":97,"end":113,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":117,"end":139,"decorators":[],"parameters":[],"variables":[]},{"name":"getValueForForm","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":143,"end":166,"decorators":[],"parameters":[],"variables":[]},{"name":"setValue","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":170,"end":191,"decorators":[],"parameters":[{"name":"value","type":"any","start":179,"end":189}],"variables":[]},{"name":"isCollectible","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":242,"end":267,"decorators":[],"parameters":[],"variables":[]},{"name":"onChange","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":270,"end":287,"decorators":[],"parameters":[],"variables":[]},{"name":"addChangeListener","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":290,"end":342,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":308,"end":334}],"variables":[]},{"name":"removeChangeListener","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":345,"end":400,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":366,"end":392}],"variables":[]},{"name":"getControl","isAbstract":true,"visibility":2,"type":"Control","isOptional":false,"isStatic":false,"isAsync":false,"start":404,"end":426,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["author","getValue","getObjectId","getValueForForm","setValue","value","isCollectible","onChange","addChangeListener","onChangeFunction","Function","removeChangeListener","getControl","Control"],"packageName":"component"},{"rootPath":"/","start":0,"end":15429,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":95,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"fakeAsync"},{"specifier":"flush"},{"specifier":"TestBed"},{"specifier":"tick"}]},{"libraryName":"@angular/core","start":96,"end":135,"specifiers":[{"specifier":"Injector"}]},{"libraryName":"component","start":136,"end":164,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"ag-grid-angular","start":165,"end":210,"specifiers":[{"specifier":"AgGridModule"}]},{"libraryName":"component.grid","start":211,"end":284,"specifiers":[{"specifier":"GridInfiniteScrollLoader"}]},{"libraryName":"generated.property.grid","start":285,"end":350,"specifiers":[{"specifier":"GridColumn"}]},{"libraryName":"pipe","start":351,"end":410,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"modules.bpmn.provider","start":411,"end":490,"specifiers":[{"specifier":"TaskParamsProvider"}]},{"libraryName":"...testing","start":491,"end":539,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":540,"end":593,"specifiers":[{"specifier":"NgbModule"}]},{"libraryName":"modules.core.component","start":594,"end":694,"specifiers":[{"specifier":"ProgressIndicationComponent"}]},{"libraryName":"generated.model.grid","start":695,"end":753,"specifiers":[{"specifier":"GridRows"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.bean.filter","start":754,"end":857,"specifiers":[{"specifier":"FilterOperation"}]},{"libraryName":"component","start":858,"end":888,"specifiers":[{"specifier":"Style"}]},{"libraryName":"modules.core.service","start":889,"end":983,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"generated.property.grid","start":984,"end":1051,"specifiers":[{"specifier":"GridColumns"}]},{"libraryName":"generated.rpc","start":1052,"end":1115,"specifiers":[{"specifier":"GridRpcService"}]},{"libraryName":"...testing","start":1116,"end":1174,"specifiers":[{"specifier":"ConstantsUtil"}]},{"libraryName":"component.grid.enums","start":1175,"end":1250,"specifiers":[{"specifier":"GridLoadingOverlayType"}]},{"libraryName":"modules.core.service","start":1295,"end":1377,"specifiers":[{"specifier":"LocalStorageService"}]},{"libraryName":"modules.core.storage","start":1378,"end":1446,"specifiers":[{"specifier":"WebbpmStorage"}]},{"libraryName":"component.grid.utils","start":1447,"end":1518,"specifiers":[{"specifier":"GridColumnStateUtils"}]},{"libraryName":"util","start":1519,"end":1565,"specifiers":[{"specifier":"FilterUtil"}]}],"exports":[],"declarations":[{"name":"ENTITY","isConst":true,"isExported":false,"start":1603,"end":1627},{"name":"NAME","isConst":true,"isExported":false,"start":1630,"end":1652},{"name":"NAME_DATE","isConst":true,"isExported":false,"start":1655,"end":1688},{"name":"NAME_TIME","isConst":true,"isExported":false,"start":1691,"end":1724},{"name":"COL_ID","isConst":true,"isExported":false,"start":1727,"end":1762},{"name":"COL_DATE_ID","isConst":true,"isExported":false,"start":1765,"end":1810},{"name":"COL_TIME_ID","isConst":true,"isExported":false,"start":1813,"end":1858},{"name":"COL_SELECTOR","isConst":true,"isExported":false,"start":1861,"end":1905},{"name":"DEFAULT_COLUMN_WIDTH","isConst":true,"isExported":false,"start":1908,"end":1940},{"name":"COLUMN_WIDTH","isConst":true,"isExported":false,"start":1943,"end":1968},{"name":"COLUMN_HEIGHT","isConst":true,"isExported":false,"start":1971,"end":1996},{"name":"STYLE_COLUMN_WIDTH","isConst":true,"isExported":false,"start":1999,"end":2053},{"name":"STYLE_COLUMN_HEIGHT","isConst":true,"isExported":false,"start":2056,"end":2113},{"name":"VALUE_1","isConst":true,"isExported":false,"start":2116,"end":2157},{"name":"VALUE_2","isConst":true,"isExported":false,"start":2160,"end":2185},{"name":"DATE_ISO","isConst":true,"isExported":false,"start":2188,"end":2228},{"name":"DATE","isConst":true,"isExported":false,"start":2231,"end":2257},{"name":"TIME","isConst":true,"isExported":false,"start":2260,"end":2296},{"name":"COLUMN_NAME","isConst":true,"isExported":false,"start":2299,"end":2329},{"name":"FILTERS","isConst":true,"isExported":false,"start":2332,"end":2420},{"name":"CTRL_CLICK","isConst":true,"isExported":false,"start":2423,"end":2528},{"name":"component","isConst":false,"isExported":false,"type":"Grid","start":2532,"end":2552},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":2555,"end":2591},{"name":"gridColumns","isConst":false,"isExported":false,"type":"GridColumns","start":2594,"end":2623},{"name":"gridRpcService","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2626,"end":2677},{"name":"gridInfiniteScrollLoader","isConst":false,"isExported":false,"type":"GridInfiniteScrollLoader","start":2680,"end":2735},{"name":"progressIndicationSpy","isConst":false,"isExported":false,"type":"ProgressIndicationService","start":2738,"end":2791},{"name":"gridRows","isConst":false,"isExported":false,"type":"GridRows","start":2794,"end":2817},{"name":"gridColumn","isConst":false,"isExported":false,"type":"GridColumn","start":2820,"end":2847},{"name":"localStorageServiceSpy","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2850,"end":2914},{"name":"el","isConst":false,"isExported":false,"type":"HTMLElement","start":2917,"end":2937},{"name":"gridApi","isConst":false,"isExported":false,"start":2940,"end":2952},{"name":"dateGridColumn","isConst":false,"isExported":false,"start":4592,"end":4674},{"name":"timeGridColumn","isConst":false,"isExported":false,"start":4679,"end":4761},{"name":"createGridColumn","isExported":false,"isAsync":false,"type":"GridColumn","start":5641,"end":6127,"parameters":[{"name":"columnName","type":"string","start":5667,"end":5685},{"name":"entity","type":"string","start":5687,"end":5701},{"name":"name","type":"string","start":5703,"end":5715},{"name":"type","type":"string","start":5717,"end":5729}],"variables":[{"name":"gridColumn","isConst":false,"isExported":false,"type":"GridColumn","start":5749,"end":5795}]},{"name":"getColumnDef","isExported":false,"isAsync":false,"start":6131,"end":6221,"parameters":[{"name":"fieldName","type":"string","start":6153,"end":6170}],"variables":[]},{"name":"triggerInitGrid","isExported":false,"isAsync":false,"start":6225,"end":6381,"parameters":[],"variables":[]},{"name":"rows","isConst":true,"isExported":false,"start":6534,"end":6609},{"name":"count","isConst":false,"isExported":false,"start":6857,"end":6871},{"name":"count","isConst":false,"isExported":false,"start":7180,"end":7194},{"name":"containerWidth","isConst":true,"isExported":false,"start":7983,"end":8077},{"name":"columnWidth","isConst":true,"isExported":false,"start":8082,"end":8158},{"name":"leftRange","isConst":false,"isExported":false,"start":8163,"end":8235},{"name":"rightRange","isConst":false,"isExported":false,"start":8240,"end":8312},{"name":"columnWidth","isConst":true,"isExported":false,"start":8466,"end":8542},{"name":"columnWidth","isConst":true,"isExported":false,"start":9310,"end":9386},{"name":"rows","isConst":true,"isExported":false,"start":10106,"end":10176},{"name":"rows","isConst":true,"isExported":false,"start":10363,"end":10433},{"name":"rowNumbers","isConst":true,"isExported":false,"start":10677,"end":10745},{"name":"rowNumbers","isConst":true,"isExported":false,"start":11074,"end":11142},{"name":"cell","isConst":true,"isExported":false,"start":11260,"end":11302},{"name":"tooltip","isConst":true,"isExported":false,"start":11402,"end":11453},{"name":"tooltip","isConst":true,"isExported":false,"start":11877,"end":11928},{"name":"checkBoxes","isConst":false,"isExported":false,"start":12265,"end":12354},{"name":"grid","isConst":true,"isExported":false,"start":13404,"end":13443},{"name":"style","isConst":false,"isExported":false,"start":13743,"end":13767},{"name":"grid","isConst":true,"isExported":false,"type":"HTMLElement","start":14088,"end":14150},{"name":"getCellValue","isExported":false,"isAsync":false,"type":"string","start":14596,"end":14735,"parameters":[{"name":"colId","type":"string","start":14618,"end":14631}],"variables":[]},{"name":"dateValue","isConst":true,"isExported":false,"start":14789,"end":14833},{"name":"dateValue","isConst":true,"isExported":false,"start":15132,"end":15181},{"name":"formattedDateTime","isConst":true,"isExported":false,"start":15186,"end":15230},{"name":"timeValue","isConst":true,"isExported":false,"start":15337,"end":15381}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["jasmine","createSpyObj","describe","ENTITY","NAME","NAME_DATE","NAME_TIME","COL_ID","COL_DATE_ID","COL_TIME_ID","COL_SELECTOR","DEFAULT_COLUMN_WIDTH","COLUMN_WIDTH","COLUMN_HEIGHT","STYLE_COLUMN_WIDTH","STYLE_COLUMN_HEIGHT","VALUE_1","VALUE_2","DATE_ISO","DATE","TIME","COLUMN_NAME","FILTERS","FilterUtil","FilterOperation","CTRL_CLICK","MouseEvent","view","window","bubbles","ctrlKey","component","Grid","fixture","ComponentFixture","gridColumns","GridColumns","gridRpcService","SpyObj","GridRpcService","gridInfiniteScrollLoader","GridInfiniteScrollLoader","progressIndicationSpy","ProgressIndicationService","gridRows","GridRows","gridColumn","GridColumn","localStorageServiceSpy","LocalStorageService","el","HTMLElement","gridApi","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","ProgressIndicationComponent","providers","Injector","provide","useValue","TaskParamsProvider","imports","AgGridModule","NgbModule","GridLoadingOverlayType","fetchSize","createGridColumn","dateGridColumn","timeGridColumn","row_uid","entity$column","entity$column_date","entity$column_time","Promise","WebbpmStorage","GridColumnStateUtils","spyOn","columnName","entity","name","type","schema","table","fieldName","it","expect","rows","fakeAsync","count","tick","flush","containerWidth","columnWidth","leftRange","Math","rightRange","getColumnDef","triggerInitGrid","row","rowNumbers","i","cell","tooltip","document","Event","checkBoxes","checkBox","xit","grid","ConstantsUtil","style","Style","colId","dateValue","getCellValue","formattedDateTime","timeValue"],"packageName":"component"},{"rootPath":"/","start":0,"end":852,"imports":[{"libraryName":"@angular/core","start":0,"end":96,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"}]},{"libraryName":"component.grid","start":97,"end":150,"specifiers":[{"specifier":"GridDataLoader"}]},{"libraryName":"component","start":151,"end":201,"specifiers":[{"specifier":"DynamicDataGrid"}]},{"libraryName":"decorators","start":202,"end":248,"specifiers":[{"specifier":"Visible"}]}],"exports":[],"declarations":[],"classes":[{"name":"Grid","isExported":true,"start":250,"end":851,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'grid',\n templateUrl: './../../../src/resources/template/component/Grid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"gridDataLoader","visibility":0,"type":"GridDataLoader","isOptional":false,"isStatic":false,"start":455,"end":494,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":577,"end":716,"decorators":[],"parameters":[],"variables":[]},{"name":"refreshData","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":720,"end":784,"decorators":[],"parameters":[],"variables":[]},{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":788,"end":849,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["DynamicDataGrid"],"implementsClauses":[],"ctor":{"name":"Grid","start":498,"end":573,"parameters":[{"name":"el","type":"ElementRef","start":510,"end":524},{"name":"cd","type":"ChangeDetectorRef","start":526,"end":547}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Promise","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","DynamicDataGrid","gridDataLoader","GridDataLoader"],"packageName":"component"},{"rootPath":"/","start":0,"end":2045,"imports":[{"libraryName":"@angular/core","start":0,"end":115,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"decorators","start":116,"end":162,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component","start":163,"end":197,"specifiers":[{"specifier":"Control"}]},{"libraryName":"decorators","start":198,"end":244,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"common","start":245,"end":295,"specifiers":[{"specifier":"ObjectValue"}]},{"libraryName":"modules.core.service","start":296,"end":373,"specifiers":[{"specifier":"NavigationService"}]},{"libraryName":"component.enum","start":374,"end":425,"specifiers":[{"specifier":"HyperLinkType"}]}],"exports":[],"declarations":[],"classes":[{"name":"HyperLink","isExported":true,"start":427,"end":2044,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'hyper-link',\n templateUrl: './../../../src/resources/template/component/HyperLink.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n }"]}],"properties":[{"name":"linkType","visibility":2,"type":"HyperLinkType","isOptional":false,"isStatic":false,"start":684,"end":752,"decorators":[{"name":"NotNull","parameters":[]},{"name":"Visible","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"url","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":756,"end":812,"decorators":[{"name":"NotNull","parameters":[]},{"name":"Visible","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"text","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":816,"end":873,"decorators":[{"name":"NotNull","parameters":[]},{"name":"Visible","parameters":[]},{"name":"Input","parameters":[]}]},{"name":"isAbsolute","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":877,"end":1002,"decorators":[{"name":"NotNull","parameters":["linkType==HyperLinkType.NAVIGATION"]},{"name":"Visible","parameters":["linkType==HyperLinkType.NAVIGATION"]}]},{"name":"openInNewTab","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1006,"end":1133,"decorators":[{"name":"NotNull","parameters":["linkType==HyperLinkType.NAVIGATION"]},{"name":"Visible","parameters":["linkType==HyperLinkType.NAVIGATION"]}]},{"name":"parameterProviders","visibility":2,"type":"ObjectValue[]","isOptional":false,"isStatic":false,"start":1137,"end":1191,"decorators":[{"name":"Visible","parameters":[]}]},{"name":"navigationService","visibility":0,"type":"NavigationService","isOptional":false,"isStatic":false,"start":1195,"end":1240,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1323,"end":1432,"decorators":[],"parameters":[],"variables":[]},{"name":"setUrl","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1436,"end":1507,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"url","type":"string","start":1463,"end":1474}],"variables":[]},{"name":"onLinkClick","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1511,"end":2042,"decorators":[],"parameters":[],"variables":[{"name":"url","isConst":false,"isExported":false,"start":1590,"end":1609},{"name":"value","isConst":false,"isExported":false,"start":1718,"end":1747}]}],"extendsClauses":["Control"],"implementsClauses":[],"ctor":{"name":"HyperLink","start":1244,"end":1319,"parameters":[{"name":"el","type":"ElementRef","start":1256,"end":1270},{"name":"cd","type":"ChangeDetectorRef","start":1272,"end":1293}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","NavigationService","Visible","url","param","ObjectValue","value","Array","RegExp","openInNewTab","isAbsolute","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Control","NotNull","Input","linkType","HyperLinkType","text","parameterProviders","navigationService"],"packageName":"component"},{"rootPath":"/","start":0,"end":2404,"imports":[{"libraryName":"modules.page.model","start":0,"end":85,"specifiers":[{"specifier":"ObjRefInitializerBean"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"IBehavior","isExported":true,"start":87,"end":2403,"accessors":[],"properties":[],"methods":[{"name":"preInitialize","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":120,"end":142,"decorators":[],"parameters":[],"variables":[]},{"name":"initialize","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":228,"end":247,"decorators":[],"parameters":[],"variables":[]},{"name":"bindEvents","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":251,"end":270,"decorators":[],"parameters":[],"variables":[]},{"name":"start","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":274,"end":288,"decorators":[],"parameters":[],"variables":[]},{"name":"postStart","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":292,"end":310,"decorators":[],"parameters":[],"variables":[]},{"name":"unbindEvents","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":314,"end":329,"decorators":[],"parameters":[],"variables":[]},{"name":"reset","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":333,"end":347,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectName","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":426,"end":450,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectDescription","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":541,"end":572,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectPath","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":576,"end":619,"decorators":[],"parameters":[{"name":"relativeParent","type":"any","start":590,"end":609}],"variables":[]},{"name":"getPrototypeId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":680,"end":705,"decorators":[],"parameters":[],"variables":[]},{"name":"getComponentRootId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":767,"end":796,"decorators":[],"parameters":[],"variables":[]},{"name":"getScriptInChildren","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":939,"end":977,"decorators":[],"parameters":[{"name":"_class","type":"any","start":959,"end":970}],"variables":[]},{"name":"getScriptsInChildren","isAbstract":true,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":1127,"end":1168,"decorators":[],"parameters":[{"name":"_class","type":"any","start":1148,"end":1159}],"variables":[]},{"name":"getChildScripts","isAbstract":true,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":1338,"end":1374,"decorators":[],"parameters":[{"name":"_class","type":"any","start":1354,"end":1365}],"variables":[]},{"name":"getScript","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1515,"end":1543,"decorators":[],"parameters":[{"name":"_class","type":"any","start":1525,"end":1536}],"variables":[]},{"name":"getScripts","isAbstract":true,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":1681,"end":1712,"decorators":[],"parameters":[{"name":"_class","type":"any","start":1692,"end":1703}],"variables":[]},{"name":"getScriptInObject","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1883,"end":1937,"decorators":[],"parameters":[{"name":"objectId","type":"string","start":1901,"end":1917},{"name":"_class","type":"any","start":1919,"end":1930}],"variables":[]},{"name":"getPageId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2008,"end":2028,"decorators":[],"parameters":[],"variables":[]},{"name":"getObjectId","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2122,"end":2144,"decorators":[],"parameters":[],"variables":[]},{"name":"getContext","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":2217,"end":2235,"decorators":[],"parameters":[],"variables":[]},{"name":"getParentContext","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":2239,"end":2263,"decorators":[],"parameters":[],"variables":[]},{"name":"implementsInterface","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":2267,"end":2316,"decorators":[],"parameters":[{"name":"_interface","type":"string","start":2287,"end":2305}],"variables":[]},{"name":"destroy","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":2320,"end":2329,"decorators":[],"parameters":[],"variables":[]},{"name":"setObjRefInitializers","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":2333,"end":2400,"decorators":[],"parameters":[{"name":"objRefInitializers","type":"ObjRefInitializerBean[]","start":2355,"end":2398}],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["preInitialize","initialize","bindEvents","start","postStart","unbindEvents","reset","returns","getObjectName","getObjectDescription","getObjectPath","relativeParent","getPrototypeId","getComponentRootId","param","_class","getScriptInChildren","getScriptsInChildren","getChildScripts","getScript","getScripts","objectId","getScriptInObject","getPageId","getObjectId","getContext","getParentContext","implementsInterface","_interface","destroy","setObjRefInitializers","objRefInitializers","ObjRefInitializerBean"],"packageName":"component"},{"rootPath":"/","start":0,"end":194,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"IControl","isExported":true,"start":0,"end":194,"accessors":[],"properties":[],"methods":[{"name":"addCssClass","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":31,"end":67,"decorators":[],"parameters":[{"name":"cssClass","type":"string","start":43,"end":59}],"variables":[]},{"name":"removeCssClass","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":71,"end":110,"decorators":[],"parameters":[{"name":"cssClass","type":"string","start":86,"end":102}],"variables":[]},{"name":"hasCssClass","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":114,"end":153,"decorators":[],"parameters":[{"name":"cssClass","type":"string","start":126,"end":142}],"variables":[]},{"name":"setEnabled","isAbstract":true,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":157,"end":192,"decorators":[],"parameters":[{"name":"enabled","type":"boolean","start":168,"end":184}],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["addCssClass","cssClass","removeCssClass","hasCssClass","setEnabled","enabled"],"packageName":"component"},{"rootPath":"/","start":0,"end":635,"imports":[{"libraryName":"@angular/core","start":0,"end":103,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component","start":104,"end":138,"specifiers":[{"specifier":"Control"}]}],"exports":[],"declarations":[],"classes":[{"name":"IFrame","isExported":true,"start":169,"end":634,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'iframe-window',\n templateUrl: './../../../src/resources/template/component/IFrame.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"source","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":378,"end":411,"decorators":[{"name":"Input","parameters":[]}]}],"methods":[{"name":"setSource","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":494,"end":579,"decorators":[],"parameters":[{"name":"source","type":"string","start":504,"end":518}],"variables":[]},{"name":"getSource","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":583,"end":632,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Control"],"implementsClauses":[],"ctor":{"name":"IFrame","start":415,"end":490,"parameters":[{"name":"el","type":"ElementRef","start":427,"end":441},{"name":"cd","type":"ChangeDetectorRef","start":443,"end":464}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","source","author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Control","Input"],"packageName":"component"},{"rootPath":"/","start":20,"end":50,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"IWindow","isExported":true,"start":20,"end":49,"accessors":[],"properties":[],"methods":[],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":[],"packageName":"component"},{"rootPath":"/","start":0,"end":415,"imports":[{"libraryName":"component","start":0,"end":28,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"@angular/core","start":29,"end":94,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]}],"exports":[],"declarations":[],"classes":[{"name":"InMemoryGrid","isExported":true,"start":126,"end":414,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'in-memory-grid',\n templateUrl: './../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":348,"end":411,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Grid"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Grid"],"packageName":"component"},{"rootPath":"/","start":0,"end":1845,"imports":[{"libraryName":"component","start":0,"end":66,"specifiers":[{"specifier":"StaticColumnInitializer"}]},{"libraryName":"@angular/core","start":67,"end":132,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]},{"libraryName":"component","start":133,"end":177,"specifiers":[{"specifier":"InMemoryGrid"}]},{"libraryName":"generated.property.grid","start":178,"end":257,"specifiers":[{"specifier":"StaticGridColumns"}]},{"libraryName":"generated.property.grid","start":258,"end":335,"specifiers":[{"specifier":"StaticGridColumn"}]},{"libraryName":"ag-grid-community","start":336,"end":377,"specifiers":[{"specifier":"ColDef"}]},{"libraryName":"component.grid.utils","start":378,"end":445,"specifiers":[{"specifier":"GridColumnDefUtils"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.api.dao.option","start":446,"end":540,"specifiers":[{"specifier":"SortOrder"}]}],"exports":[],"declarations":[],"classes":[{"name":"InMemoryStaticColumnGrid","isExported":true,"start":542,"end":1844,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'in-memory-static-column-grid',\n templateUrl: './../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"initDefaultSortModel","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":801,"end":1259,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"type":"StaticGridColumn[]","start":846,"end":912}]},{"name":"getColumnsScript","isAbstract":false,"visibility":1,"type":"StaticGridColumns","isOptional":false,"isStatic":false,"isAsync":false,"start":1263,"end":1362,"decorators":[],"parameters":[],"variables":[]},{"name":"initColumnDefs","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1366,"end":1703,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"type":"StaticGridColumn[]","start":1405,"end":1471},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":1601,"end":1662}]},{"name":"columnToColumnDef","isAbstract":false,"visibility":1,"type":"ColDef","isOptional":false,"isStatic":false,"isAsync":false,"start":1707,"end":1842,"decorators":[],"parameters":[{"name":"column","type":"StaticGridColumn","start":1735,"end":1759}],"variables":[]}],"extendsClauses":["InMemoryGrid"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["columns","StaticGridColumn","column","SortOrder","StaticGridColumns","colum","columnDef","ColDef","GridColumnDefUtils","StaticColumnInitializer","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","InMemoryGrid"],"packageName":"component"},{"rootPath":"/","start":0,"end":422,"imports":[{"libraryName":"@angular/core","start":0,"end":102,"specifiers":[{"specifier":"AfterViewInit"},{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"},{"specifier":"EventEmitter"},{"specifier":"Output"}]}],"exports":[],"declarations":[],"classes":[{"name":"InitEventsComponent","isExported":true,"start":104,"end":422,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'init-events',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"afterViewInit","visibility":2,"type":"EventEmitter","isOptional":false,"isStatic":false,"start":276,"end":356,"decorators":[{"name":"Output","parameters":[]}]}],"methods":[{"name":"ngAfterViewInit","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":360,"end":420,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":["AfterViewInit"]}],"interfaces":[],"enums":[],"resources":[],"usages":["Component","selector","template","changeDetection","ChangeDetectionStrategy","AfterViewInit","Output","afterViewInit","EventEmitter"],"packageName":"component"},{"rootPath":"/","start":0,"end":556,"imports":[{"libraryName":"@angular/core","start":0,"end":103,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component","start":104,"end":138,"specifiers":[{"specifier":"Control"}]},{"libraryName":"decorators","start":139,"end":201,"specifiers":[{"specifier":"TextAreaEditor"}]}],"exports":[],"declarations":[],"classes":[{"name":"InnerHtml","isExported":true,"start":203,"end":555,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'inner-html',\n templateUrl: './../../../src/resources/template/component/InnerHtml.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"htmlAsString","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":415,"end":474,"decorators":[{"name":"Input","parameters":[]},{"name":"TextAreaEditor","parameters":[]}]}],"methods":[],"extendsClauses":["Control"],"implementsClauses":[],"ctor":{"name":"InnerHtml","start":478,"end":553,"parameters":[{"name":"el","type":"ElementRef","start":490,"end":504},{"name":"cd","type":"ChangeDetectorRef","start":506,"end":527}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Control","Input","TextAreaEditor","htmlAsString"],"packageName":"component"},{"rootPath":"/","start":0,"end":16671,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":95,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"fakeAsync"},{"specifier":"flush"},{"specifier":"TestBed"},{"specifier":"tick"}]},{"libraryName":"pipe","start":96,"end":155,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"ag-grid-angular","start":156,"end":201,"specifiers":[{"specifier":"AgGridModule"}]},{"libraryName":"modules.core.component","start":202,"end":302,"specifiers":[{"specifier":"ProgressIndicationComponent"}]},{"libraryName":"@angular/core","start":303,"end":342,"specifiers":[{"specifier":"Injector"}]},{"libraryName":"modules.core.service","start":343,"end":437,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"modules.bpmn.provider","start":438,"end":517,"specifiers":[{"specifier":"TaskParamsProvider"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":518,"end":571,"specifiers":[{"specifier":"NgbModule"}]},{"libraryName":"component","start":572,"end":612,"specifiers":[{"specifier":"PagingGrid"}]},{"libraryName":"generated.property.grid","start":613,"end":680,"specifiers":[{"specifier":"GridColumns"}]},{"libraryName":"generated.property.grid","start":681,"end":746,"specifiers":[{"specifier":"GridColumn"}]},{"libraryName":"...testing","start":747,"end":795,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"component","start":796,"end":826,"specifiers":[{"specifier":"Style"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.bean.filter","start":827,"end":930,"specifiers":[{"specifier":"FilterOperation"}]},{"libraryName":"generated.model.grid","start":931,"end":989,"specifiers":[{"specifier":"GridRows"}]},{"libraryName":"component.grid","start":990,"end":1047,"specifiers":[{"specifier":"GridPagingLoader"}]},{"libraryName":"...testing","start":1048,"end":1106,"specifiers":[{"specifier":"ConstantsUtil"}]},{"libraryName":"component.grid.enums","start":1107,"end":1182,"specifiers":[{"specifier":"GridLoadingOverlayType"}]},{"libraryName":"modules.core.service","start":1183,"end":1265,"specifiers":[{"specifier":"LocalStorageService"}]},{"libraryName":"modules.core.storage","start":1266,"end":1334,"specifiers":[{"specifier":"WebbpmStorage"}]},{"libraryName":"component.grid.utils","start":1335,"end":1406,"specifiers":[{"specifier":"GridColumnStateUtils"}]},{"libraryName":"util","start":1451,"end":1497,"specifiers":[{"specifier":"FilterUtil"}]},{"libraryName":"generated.rpc","start":1498,"end":1561,"specifiers":[{"specifier":"GridRpcService"}]}],"exports":[],"declarations":[{"name":"TEXT","isConst":true,"isExported":false,"start":1605,"end":1639},{"name":"TOTAL_ROW_COUNT","isConst":true,"isExported":false,"start":1642,"end":1670},{"name":"DEFAULT_PAGE_SIZE","isConst":true,"isExported":false,"start":1673,"end":1702},{"name":"DEFAULT_PAGE_COUNT","isConst":true,"isExported":false,"start":1705,"end":1777},{"name":"LESS_PAGE_SIZE","isConst":true,"isExported":false,"start":1780,"end":1806},{"name":"MORE_PAGE_SIZE","isConst":true,"isExported":false,"start":1809,"end":1835},{"name":"LAST_PAGE_SIZE","isConst":true,"isExported":false,"start":1838,"end":1924},{"name":"ENTITY","isConst":true,"isExported":false,"start":1927,"end":1951},{"name":"NAME","isConst":true,"isExported":false,"start":1954,"end":1976},{"name":"COL_ID","isConst":true,"isExported":false,"start":1979,"end":2014},{"name":"COL_SELECTOR","isConst":true,"isExported":false,"start":2017,"end":2061},{"name":"CELL_SELECTOR","isConst":true,"isExported":false,"start":2064,"end":2103},{"name":"MIN_COLUMN_WIDTH","isConst":true,"isExported":false,"start":2106,"end":2133},{"name":"COLUMN_WIDTH","isConst":true,"isExported":false,"start":2136,"end":2161},{"name":"COLUMN_HEIGHT","isConst":true,"isExported":false,"start":2164,"end":2189},{"name":"STYLE_COLUMN_WIDTH","isConst":true,"isExported":false,"start":2192,"end":2246},{"name":"STYLE_COLUMN_HEIGHT","isConst":true,"isExported":false,"start":2249,"end":2306},{"name":"COLUMN_NAME","isConst":true,"isExported":false,"start":2309,"end":2339},{"name":"FILTERS","isConst":false,"isExported":false,"start":2342,"end":2429},{"name":"CTRL_CLICK","isConst":true,"isExported":false,"start":2433,"end":2538},{"name":"progressIndicationSpy","isConst":false,"isExported":false,"type":"ProgressIndicationService","start":2542,"end":2595},{"name":"component","isConst":false,"isExported":false,"type":"PagingGrid","start":2598,"end":2624},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":2627,"end":2669},{"name":"gridPagingLoader","isConst":false,"isExported":false,"type":"GridPagingLoader","start":2672,"end":2711},{"name":"gridRpcService","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2714,"end":2765},{"name":"gridColumns","isConst":false,"isExported":false,"type":"GridColumns","start":2768,"end":2797},{"name":"gridColumn","isConst":false,"isExported":false,"type":"GridColumn","start":2800,"end":2827},{"name":"gridRows","isConst":false,"isExported":false,"type":"GridRows","start":2830,"end":2853},{"name":"localStorageServiceSpy","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2856,"end":2920},{"name":"el","isConst":false,"isExported":false,"type":"HTMLElement","start":2923,"end":2943},{"name":"gridApi","isConst":false,"isExported":false,"start":2946,"end":2958},{"name":"getColumnDef","isExported":false,"isAsync":false,"start":5731,"end":5821,"parameters":[{"name":"fieldName","type":"string","start":5753,"end":5770}],"variables":[]},{"name":"triggerInitGrid","isExported":false,"isAsync":false,"start":5825,"end":5974,"parameters":[],"variables":[]},{"name":"count","isConst":false,"isExported":false,"start":6162,"end":6176},{"name":"count","isConst":false,"isExported":false,"start":6472,"end":6486},{"name":"containerWidth","isConst":true,"isExported":false,"start":7566,"end":7660},{"name":"columnWidth","isConst":true,"isExported":false,"start":7665,"end":7741},{"name":"leftRange","isConst":false,"isExported":false,"start":7746,"end":7818},{"name":"rightRange","isConst":false,"isExported":false,"start":7823,"end":7895},{"name":"columnWidth","isConst":true,"isExported":false,"start":8129,"end":8205},{"name":"columnWidth","isConst":true,"isExported":false,"start":9008,"end":9084},{"name":"rows","isConst":true,"isExported":false,"start":9787,"end":9857},{"name":"rows","isConst":true,"isExported":false,"start":10067,"end":10137},{"name":"rowNumbers","isConst":true,"isExported":false,"start":10403,"end":10471},{"name":"rowNumbers","isConst":true,"isExported":false,"start":10787,"end":10855},{"name":"checkBoxes","isConst":false,"isExported":false,"start":11199,"end":11288},{"name":"grid","isConst":false,"isExported":false,"start":12318,"end":12355},{"name":"style","isConst":false,"isExported":false,"start":12636,"end":12660},{"name":"grid","isConst":true,"isExported":false,"type":"HTMLElement","start":12981,"end":13043},{"name":"pageCount1","isConst":false,"isExported":false,"start":14415,"end":14468},{"name":"pageCount2","isConst":false,"isExported":false,"start":14555,"end":14608},{"name":"SECOND_PAGE","isConst":true,"isExported":false,"start":14869,"end":14891},{"name":"INVALID_PAGE","isConst":true,"isExported":false,"start":15212,"end":15237},{"name":"NEXT_PAGE","isConst":true,"isExported":false,"start":15552,"end":15572},{"name":"PREVIOUS_PAGE","isConst":true,"isExported":false,"start":16179,"end":16203}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["jasmine","createSpyObj","describe","TEXT","TOTAL_ROW_COUNT","DEFAULT_PAGE_SIZE","DEFAULT_PAGE_COUNT","Math","LESS_PAGE_SIZE","MORE_PAGE_SIZE","LAST_PAGE_SIZE","ENTITY","NAME","COL_ID","COL_SELECTOR","CELL_SELECTOR","MIN_COLUMN_WIDTH","COLUMN_WIDTH","COLUMN_HEIGHT","STYLE_COLUMN_WIDTH","STYLE_COLUMN_HEIGHT","COLUMN_NAME","FILTERS","FilterUtil","FilterOperation","CTRL_CLICK","MouseEvent","view","window","bubbles","ctrlKey","progressIndicationSpy","ProgressIndicationService","component","PagingGrid","fixture","ComponentFixture","gridPagingLoader","GridPagingLoader","gridRpcService","SpyObj","GridRpcService","gridColumns","GridColumns","gridColumn","GridColumn","gridRows","GridRows","localStorageServiceSpy","LocalStorageService","el","HTMLElement","gridApi","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","ProgressIndicationComponent","providers","Injector","provide","useValue","TaskParamsProvider","imports","AgGridModule","NgbModule","GridLoadingOverlayType","defaultPageSize","pageSizes","schema","table","entity","name","type","i","row_uid","entity$column","Promise","WebbpmStorage","GridColumnStateUtils","spyOn","fieldName","it","expect","fakeAsync","count","tick","flush","xit","containerWidth","columnWidth","leftRange","rightRange","triggerInitGrid","getColumnDef","rows","rowNumbers","Event","checkBoxes","checkBox","grid","ConstantsUtil","style","Style","pageCount1","pageCount2","SECOND_PAGE","INVALID_PAGE","NEXT_PAGE","PREVIOUS_PAGE"],"packageName":"component"},{"rootPath":"/","start":0,"end":3173,"imports":[{"libraryName":"@angular/core","start":0,"end":115,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component","start":116,"end":144,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"decorators","start":145,"end":191,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component.grid","start":192,"end":257,"specifiers":[{"specifier":"GridPagingDataLoader"}]}],"exports":[],"declarations":[],"classes":[{"name":"PagingGrid","isExported":true,"start":259,"end":3172,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'paging-grid',\n templateUrl: './../../../src/resources/template/component/PagingGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"pageSizes","visibility":2,"type":"number[]","isOptional":false,"isStatic":false,"start":471,"end":529,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"pageSize","visibility":2,"type":"number","isOptional":false,"isStatic":false,"start":533,"end":588,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"paginationPageSize","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":592,"end":654,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["false"]}]},{"name":"gridPagingLoader","visibility":0,"type":"GridPagingDataLoader","isOptional":false,"isStatic":false,"start":658,"end":705,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":788,"end":1101,"decorators":[],"parameters":[],"variables":[{"name":"loadingOptions","isConst":false,"isExported":false,"start":902,"end":962}]},{"name":"refresh","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1105,"end":1180,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"setPageSize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1184,"end":1271,"decorators":[],"parameters":[{"name":"value","type":"number","start":1196,"end":1209}],"variables":[]},{"name":"setPaginationPageSize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":1275,"end":1382,"decorators":[],"parameters":[{"name":"value","type":"number","start":1297,"end":1310}],"variables":[]},{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1386,"end":1447,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationIsLastPageFound","isAbstract":false,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1451,"end":1546,"decorators":[],"parameters":[],"variables":[]},{"name":"isOnFirstPage","isAbstract":false,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1550,"end":1616,"decorators":[],"parameters":[],"variables":[]},{"name":"isOnLastPage","isAbstract":false,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":1620,"end":1714,"decorators":[],"parameters":[],"variables":[]},{"name":"firstRowOnPage","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":1718,"end":1853,"decorators":[],"parameters":[],"variables":[]},{"name":"lastRowOnPage","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":1857,"end":1996,"decorators":[],"parameters":[],"variables":[]},{"name":"currentPage","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2000,"end":2083,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGetPageSize","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2087,"end":2173,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationSetPageSize","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2177,"end":2270,"decorators":[],"parameters":[{"name":"size","type":"number","start":2199,"end":2211}],"variables":[]},{"name":"paginationGetTotalPages","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2274,"end":2364,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGetRowCount","isAbstract":false,"type":"number","isOptional":false,"isStatic":false,"isAsync":false,"start":2368,"end":2454,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGoToNextPage","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2458,"end":2537,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGoToPreviousPage","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2541,"end":2628,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGoToFirstPage","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2632,"end":2713,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGoToLastPage","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2717,"end":2796,"decorators":[],"parameters":[],"variables":[]},{"name":"paginationGoToPage","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2800,"end":2889,"decorators":[],"parameters":[{"name":"page","type":"any","start":2819,"end":2828}],"variables":[]},{"name":"onPageSizeChange","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2893,"end":3170,"decorators":[],"parameters":[{"name":"newSize","type":"number","start":2910,"end":2925}],"variables":[]}],"extendsClauses":["Grid"],"implementsClauses":[],"ctor":{"name":"PagingGrid","start":709,"end":784,"parameters":[{"name":"el","type":"ElementRef","start":721,"end":735},{"name":"cd","type":"ChangeDetectorRef","start":737,"end":758}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Promise","loadingOptions","Visible","value","Math","size","page","newSize","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Grid","Input","pageSizes","pageSize","paginationPageSize","gridPagingLoader","GridPagingDataLoader"],"packageName":"component"},{"rootPath":"/","start":0,"end":299,"imports":[{"libraryName":"common","start":0,"end":44,"specifiers":[{"specifier":"Deferred"}]}],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"SelectableComponent","isExported":true,"start":46,"end":298,"accessors":[],"properties":[],"methods":[{"name":"isMultiselectable","isAbstract":true,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":88,"end":117,"decorators":[],"parameters":[],"variables":[]},{"name":"getSelectValue","isAbstract":true,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":121,"end":143,"decorators":[],"parameters":[],"variables":[]},{"name":"getSelectValues","isAbstract":true,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":147,"end":172,"decorators":[],"parameters":[],"variables":[]},{"name":"addSelectListener","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":176,"end":214,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":194,"end":212}],"variables":[]},{"name":"removeSelectListener","isAbstract":true,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":218,"end":259,"decorators":[],"parameters":[{"name":"listener","type":"Function","start":239,"end":257}],"variables":[]},{"name":"getDependValue","isAbstract":true,"visibility":2,"type":"Deferred","isOptional":false,"isStatic":false,"isAsync":false,"start":263,"end":296,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["isMultiselectable","getSelectValue","getSelectValues","addSelectListener","listener","Function","removeSelectListener","getDependValue","Deferred"],"packageName":"component"},{"rootPath":"/","start":0,"end":1975,"imports":[{"libraryName":"component","start":0,"end":46,"specifiers":[{"specifier":"SelectionItem"}]}],"exports":[],"declarations":[],"classes":[{"name":"SelectionChangeEvent","isExported":true,"start":48,"end":1975,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"selection","visibility":0,"type":"SelectionItem[]","isOptional":false,"isStatic":false,"start":86,"end":121,"decorators":[]}],"methods":[{"name":"getSelection","isAbstract":false,"visibility":2,"type":"SelectionItem[]","isOptional":false,"isStatic":false,"isAsync":false,"start":715,"end":786,"decorators":[],"parameters":[],"variables":[]},{"name":"isSelected","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":790,"end":868,"decorators":[],"parameters":[],"variables":[]},{"name":"isSingleSelected","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":872,"end":957,"decorators":[],"parameters":[],"variables":[]},{"name":"isMultiSelected","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":961,"end":1044,"decorators":[],"parameters":[],"variables":[]},{"name":"selectedItems","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":1048,"end":1330,"decorators":[],"parameters":[],"variables":[{"name":"selected","isConst":false,"isExported":false,"type":"any[]","start":1084,"end":1109},{"name":"index","isConst":false,"isExported":false,"type":"number","start":1114,"end":1132}]},{"name":"deselectedItems","isAbstract":false,"visibility":2,"type":"any[]","isOptional":false,"isStatic":false,"isAsync":false,"start":1334,"end":1625,"decorators":[],"parameters":[],"variables":[{"name":"deselected","isConst":false,"isExported":false,"type":"any[]","start":1372,"end":1399},{"name":"index","isConst":false,"isExported":false,"type":"number","start":1404,"end":1422}]},{"name":"selectedItem","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1629,"end":1973,"decorators":[],"parameters":[],"variables":[{"name":"selected","isConst":false,"isExported":false,"type":"any[]","start":1662,"end":1705}]}],"extendsClauses":[],"implementsClauses":[],"ctor":{"name":"SelectionChangeEvent","start":259,"end":711,"parameters":[{"name":"selectionOrItem","type":"any","start":271,"end":291},{"name":"selected","type":"boolean","start":293,"end":311}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["selection","SelectionItem","selectionItem","item","selected","selectionOrItem","Array","undefined","index","deselected","window","console"],"packageName":"component"},{"rootPath":"/","start":0,"end":189,"imports":[],"exports":[],"declarations":[],"classes":[{"name":"SelectionItem","isExported":true,"start":0,"end":189,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"item","visibility":2,"type":"any","isOptional":false,"isStatic":false,"start":31,"end":48,"decorators":[]},{"name":"isSelected","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":51,"end":78,"decorators":[]}],"methods":[],"extendsClauses":[],"implementsClauses":[],"ctor":{"name":"SelectionItem","start":82,"end":187,"parameters":[{"name":"item","type":"any","start":94,"end":103},{"name":"isSelected","type":"boolean","start":105,"end":124}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["item","isSelected"],"packageName":"component"},{"rootPath":"/","start":0,"end":1800,"imports":[{"libraryName":"component","start":0,"end":28,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"generated.property.grid","start":29,"end":108,"specifiers":[{"specifier":"StaticGridColumns"}]},{"libraryName":"generated.property.grid","start":109,"end":186,"specifiers":[{"specifier":"StaticGridColumn"}]},{"libraryName":"component","start":187,"end":253,"specifiers":[{"specifier":"StaticColumnInitializer"}]},{"libraryName":"@angular/core","start":254,"end":319,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]},{"libraryName":"ag-grid-community","start":320,"end":361,"specifiers":[{"specifier":"ColDef"}]},{"libraryName":"component.grid.utils","start":362,"end":429,"specifiers":[{"specifier":"GridColumnDefUtils"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.api.dao.option","start":430,"end":524,"specifiers":[{"specifier":"SortOrder"}]}],"exports":[],"declarations":[],"classes":[{"name":"StaticColumnGrid","isExported":true,"start":526,"end":1799,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'static-column-grid',\n templateUrl: './../../../src/resources/template/component/ClientSideGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"initDefaultSortModel","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":756,"end":1214,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"type":"StaticGridColumn[]","start":801,"end":867}]},{"name":"getColumnsScript","isAbstract":false,"visibility":1,"type":"StaticGridColumns","isOptional":false,"isStatic":false,"isAsync":false,"start":1218,"end":1317,"decorators":[],"parameters":[],"variables":[]},{"name":"initColumnDefs","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1321,"end":1658,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"type":"StaticGridColumn[]","start":1360,"end":1426},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":1556,"end":1617}]},{"name":"columnToColumnDef","isAbstract":false,"visibility":1,"type":"ColDef","isOptional":false,"isStatic":false,"isAsync":false,"start":1662,"end":1797,"decorators":[],"parameters":[{"name":"column","type":"StaticGridColumn","start":1690,"end":1714}],"variables":[]}],"extendsClauses":["Grid"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["columns","StaticGridColumn","column","SortOrder","StaticGridColumns","colum","columnDef","ColDef","GridColumnDefUtils","StaticColumnInitializer","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Grid"],"packageName":"component"},{"rootPath":"/","start":0,"end":2252,"imports":[{"libraryName":"component.grid.utils","start":0,"end":75,"specifiers":[{"specifier":"GridValueRendererUtils"}]},{"libraryName":"generated.property.grid","start":76,"end":153,"specifiers":[{"specifier":"StaticGridColumn"}]},{"libraryName":"ag-grid-community","start":154,"end":243,"specifiers":[{"specifier":"ColDef"},{"specifier":"ICellRendererFunc"},{"specifier":"SuppressKeyboardEventParams"}]},{"libraryName":"component.grid.utils","start":244,"end":321,"specifiers":[{"specifier":"GridValueFormatterUtils"}]},{"libraryName":"component.grid.utils","start":322,"end":399,"specifiers":[{"specifier":"GridColumnKeyboardUtils"}]},{"libraryName":"component.grid.utils","start":400,"end":481,"specifiers":[{"specifier":"GridColumnComparatorUtils"}]},{"libraryName":"component.grid.headers","start":482,"end":549,"specifiers":[{"specifier":"GridSettingHeader"}]},{"libraryName":"component.grid.utils","start":550,"end":621,"specifiers":[{"specifier":"GridCellTooltipUtils"}]}],"exports":[],"declarations":[],"classes":[{"name":"StaticColumnInitializer","isExported":true,"start":623,"end":2251,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[],"methods":[{"name":"columnToColumnDef","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":true,"isAsync":false,"start":665,"end":2249,"decorators":[],"parameters":[{"name":"gridRef","type":"any","start":697,"end":709},{"name":"column","type":"StaticGridColumn","start":711,"end":735}],"variables":[{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":743,"end":770},{"name":"type","isConst":false,"isExported":false,"start":1349,"end":1372},{"name":"renderer","isConst":true,"isExported":false,"type":"ICellRendererFunc","start":1751,"end":1831}]}],"extendsClauses":[],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["gridRef","column","StaticGridColumn","columnDef","ColDef","GridSettingHeader","type","GridValueFormatterUtils","GridColumnComparatorUtils","GridValueRendererUtils","renderer","ICellRendererFunc","params","GridCellTooltipUtils","SuppressKeyboardEventParams","GridColumnKeyboardUtils"],"packageName":"component"},{"rootPath":"/","start":0,"end":2874,"imports":[{"libraryName":"component","start":0,"end":36,"specifiers":[{"specifier":"TreeGrid"}]},{"libraryName":"generated.property.grid","start":37,"end":116,"specifiers":[{"specifier":"StaticGridColumns"}]},{"libraryName":"generated.property.grid","start":117,"end":194,"specifiers":[{"specifier":"StaticGridColumn"}]},{"libraryName":"component.grid.utils","start":195,"end":270,"specifiers":[{"specifier":"GridValueRendererUtils"}]},{"libraryName":"@angular/core","start":271,"end":336,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]},{"libraryName":"ag-grid-community","start":337,"end":378,"specifiers":[{"specifier":"ColDef"}]},{"libraryName":"component.grid.utils","start":379,"end":446,"specifiers":[{"specifier":"GridColumnDefUtils"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.api.dao.option","start":447,"end":541,"specifiers":[{"specifier":"SortOrder"}]},{"libraryName":"component.grid.utils","start":542,"end":619,"specifiers":[{"specifier":"GridValueFormatterUtils"}]},{"libraryName":"component.grid.utils","start":620,"end":701,"specifiers":[{"specifier":"GridColumnComparatorUtils"}]},{"libraryName":"component.grid.headers","start":702,"end":769,"specifiers":[{"specifier":"GridSettingHeader"}]}],"exports":[],"declarations":[],"classes":[{"name":"StaticColumnTreeGrid","isExported":true,"start":771,"end":2873,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'static-column-tree-grid',\n templateUrl: './../../../src/resources/template/component/TreeGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[],"methods":[{"name":"initDefaultSortModel","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1008,"end":1466,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"type":"StaticGridColumn[]","start":1053,"end":1119}]},{"name":"getColumnsScript","isAbstract":false,"visibility":1,"type":"StaticGridColumns","isOptional":false,"isStatic":false,"isAsync":false,"start":1470,"end":1569,"decorators":[],"parameters":[],"variables":[]},{"name":"initColumnDefs","isAbstract":false,"visibility":1,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1573,"end":1979,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":true,"isExported":false,"type":"StaticGridColumn[]","start":1612,"end":1680},{"name":"colDefs","isConst":false,"isExported":false,"start":1685,"end":1753},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":1788,"end":1849}]},{"name":"columnToColumnDef","isAbstract":false,"visibility":1,"type":"ColDef","isOptional":false,"isStatic":false,"isAsync":false,"start":1983,"end":2871,"decorators":[],"parameters":[{"name":"column","type":"StaticGridColumn","start":2011,"end":2035}],"variables":[{"name":"columnDef","isConst":true,"isExported":false,"type":"ColDef","start":2051,"end":2080},{"name":"type","isConst":false,"isExported":false,"start":2431,"end":2454},{"name":"renderer","isConst":true,"isExported":false,"start":2657,"end":2724}]}],"extendsClauses":["TreeGrid"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["columns","StaticGridColumn","column","SortOrder","StaticGridColumns","colDefs","columnDef","ColDef","GridColumnDefUtils","GridSettingHeader","type","GridValueFormatterUtils","GridColumnComparatorUtils","renderer","GridValueRendererUtils","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","TreeGrid"],"packageName":"component"},{"rootPath":"/","start":29,"end":315,"imports":[],"exports":[],"declarations":[],"classes":[{"name":"Style","isExported":true,"start":29,"end":314,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"padding","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":53,"end":76,"decorators":[]},{"name":"margin","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":79,"end":101,"decorators":[]},{"name":"border","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":104,"end":126,"decorators":[]},{"name":"height","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":129,"end":151,"decorators":[]},{"name":"width","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":154,"end":175,"decorators":[]},{"name":"minHeight","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":178,"end":203,"decorators":[]},{"name":"minWidth","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":206,"end":230,"decorators":[]},{"name":"maxHeight","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":233,"end":258,"decorators":[]},{"name":"maxWidth","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":261,"end":285,"decorators":[]},{"name":"stretch","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":288,"end":312,"decorators":[]}],"methods":[],"extendsClauses":[],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["author","padding","margin","border","height","width","minHeight","minWidth","maxHeight","maxWidth","stretch"],"packageName":"component"},{"rootPath":"/","start":0,"end":1196,"imports":[{"libraryName":"component.button","start":0,"end":39,"specifiers":[{"specifier":"Button"}]},{"libraryName":"component","start":40,"end":68,"specifiers":[{"specifier":"Grid"}]},{"libraryName":"modules.security.service","start":69,"end":171,"specifiers":[{"specifier":"AuthenticationMethodService"}]},{"libraryName":"decorators","start":172,"end":218,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"@angular/core","start":219,"end":284,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"Component"}]},{"libraryName":"@angular/common/http","start":285,"end":333,"specifiers":[{"specifier":"HttpClient"}]},{"libraryName":"decorators","start":334,"end":384,"specifiers":[{"specifier":"ObjectRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"SyncLDAPButton","isExported":true,"start":386,"end":1195,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'ldap-button',\n templateUrl: './../../../src/resources/template/component/button/Button.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"httpClient","visibility":0,"type":"HttpClient","isOptional":false,"isStatic":false,"start":610,"end":641,"decorators":[]},{"name":"authenticationMethodService","visibility":0,"type":"AuthenticationMethodService","isOptional":false,"isStatic":false,"start":644,"end":709,"decorators":[]},{"name":"usersGrid","visibility":2,"type":"Grid","isOptional":false,"isStatic":false,"start":713,"end":764,"decorators":[{"name":"ObjectRef","parameters":[]},{"name":"NotNull","parameters":[]}]}],"methods":[{"name":"initialize","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":768,"end":950,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":954,"end":1193,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Button"],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["HttpClient","AuthenticationMethodService","Promise","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Button","httpClient","authenticationMethodService","ObjectRef","NotNull","usersGrid","Grid"],"packageName":"component"},{"rootPath":"/","start":0,"end":4294,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":71,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"TestBed"}]},{"libraryName":"@angular/forms","start":72,"end":115,"specifiers":[{"specifier":"FormsModule"}]},{"libraryName":"...testing","start":116,"end":164,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"pipe","start":165,"end":224,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"component","start":225,"end":253,"specifiers":[{"specifier":"Text"}]},{"libraryName":"component","start":254,"end":284,"specifiers":[{"specifier":"Style"}]},{"libraryName":"...testing","start":285,"end":343,"specifiers":[{"specifier":"ConstantsUtil"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":344,"end":409,"specifiers":[{"specifier":"NgbModule"},{"specifier":"NgbTooltip"}]}],"exports":[],"declarations":[{"name":"TEXT","isConst":true,"isExported":false,"start":438,"end":472},{"name":"component","isConst":false,"isExported":false,"type":"Text","start":475,"end":495},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":498,"end":534},{"name":"el","isConst":false,"isExported":false,"type":"HTMLElement","start":537,"end":557},{"name":"div","isConst":false,"isExported":false,"start":1837,"end":1871},{"name":"style","isConst":true,"isExported":false,"start":3086,"end":3112},{"name":"testPadding","isConst":true,"isExported":false,"start":3117,"end":3143},{"name":"testMargin","isConst":true,"isExported":false,"start":3148,"end":3173},{"name":"testBorder","isConst":true,"isExported":false,"start":3178,"end":3203},{"name":"testHeight","isConst":true,"isExported":false,"start":3208,"end":3234},{"name":"testWidth","isConst":true,"isExported":false,"start":3239,"end":3265},{"name":"testMinHeight","isConst":true,"isExported":false,"start":3270,"end":3299},{"name":"testMinWidth","isConst":true,"isExported":false,"start":3304,"end":3332},{"name":"testMaxHeight","isConst":true,"isExported":false,"start":3337,"end":3366},{"name":"testMaxWidth","isConst":true,"isExported":false,"start":3371,"end":3400}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["describe","TEXT","component","Text","fixture","ComponentFixture","el","HTMLElement","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","imports","NgbModule","it","expect","xit","div","undefined","ConstantsUtil","style","Style","testPadding","testMargin","testBorder","testHeight","testWidth","testMinHeight","testMinWidth","testMaxHeight","testMaxWidth"],"packageName":"component"},{"rootPath":"/","start":0,"end":3433,"imports":[{"libraryName":"@angular/core","start":0,"end":115,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"component","start":116,"end":150,"specifiers":[{"specifier":"Control"}]},{"libraryName":"component","start":151,"end":197,"specifiers":[{"specifier":"TextFormatter"}]},{"libraryName":"decorators","start":198,"end":244,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"decorators","start":245,"end":291,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component","start":292,"end":344,"specifiers":[{"specifier":"ControlWithValue"}]},{"libraryName":"webbpm.event","start":345,"end":389,"specifiers":[{"specifier":"Event"}]}],"exports":[],"declarations":[],"classes":[{"name":"Text","isExported":true,"start":420,"end":3432,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'text',\n templateUrl: './../../../src/resources/template/component/field/Text.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n }"]}],"properties":[{"name":"label","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":694,"end":726,"decorators":[{"name":"Input","parameters":[]}]},{"name":"initialValue","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":730,"end":769,"decorators":[{"name":"Input","parameters":[]}]},{"name":"value","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":773,"end":814,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"collectible","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":818,"end":870,"decorators":[{"name":"Input","parameters":[]},{"name":"NotNull","parameters":[]}]},{"name":"internalValue","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":874,"end":923,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"textFormatter","visibility":2,"type":"TextFormatter","isOptional":false,"isStatic":false,"start":927,"end":963,"decorators":[]},{"name":"valueChangeEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":967,"end":1048,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"htmlValue","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":1052,"end":1102,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"changeListeners","visibility":0,"type":"Function[]","isOptional":false,"isStatic":false,"start":1130,"end":1171,"decorators":[]},{"name":"pristine","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":1174,"end":1207,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1290,"end":1370,"decorators":[],"parameters":[],"variables":[]},{"name":"reset","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":1374,"end":1481,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getValue","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1485,"end":1560,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getValueForForm","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1564,"end":1633,"decorators":[],"parameters":[],"variables":[]},{"name":"getPresentationValue","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1637,"end":1711,"decorators":[],"parameters":[],"variables":[]},{"name":"getTextValue","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":1715,"end":1809,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getValueAsModel","isAbstract":false,"visibility":2,"type":"any","isOptional":false,"isStatic":false,"isAsync":false,"start":1813,"end":1876,"decorators":[],"parameters":[],"variables":[]},{"name":"setValue","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":1880,"end":2108,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":1909,"end":1922}],"variables":[]},{"name":"setLabel","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":2112,"end":2213,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":2141,"end":2154}],"variables":[]},{"name":"clearValue","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":2217,"end":2280,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"isCollectible","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":2284,"end":2363,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getLabel","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":2367,"end":2434,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"onChange","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":2438,"end":2555,"decorators":[],"parameters":[],"variables":[]},{"name":"addChangeListener","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2559,"end":2678,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":2577,"end":2603}],"variables":[]},{"name":"removeChangeListener","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2682,"end":2807,"decorators":[],"parameters":[{"name":"onChangeFunction","type":"Function","start":2703,"end":2729}],"variables":[]},{"name":"resetValue","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2811,"end":2879,"decorators":[],"parameters":[],"variables":[]},{"name":"isPristine","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":2883,"end":2943,"decorators":[],"parameters":[],"variables":[]},{"name":"setInitValue","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2947,"end":3037,"decorators":[],"parameters":[],"variables":[]},{"name":"resetPristine","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3041,"end":3102,"decorators":[],"parameters":[],"variables":[]},{"name":"isValueEmpty","isAbstract":false,"visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":3106,"end":3203,"decorators":[],"parameters":[],"variables":[]},{"name":"getHtmlValue","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":3207,"end":3430,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["Control"],"implementsClauses":["ControlWithValue"],"ctor":{"name":"Text","start":1211,"end":1286,"parameters":[{"name":"el","type":"ElementRef","start":1223,"end":1237},{"name":"cd","type":"ChangeDetectorRef","start":1239,"end":1260}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Visible","value","onChangeFunction","Function","author","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","Control","ControlWithValue","Input","label","initialValue","NotNull","collectible","internalValue","textFormatter","TextFormatter","valueChangeEvent","Event","htmlValue","changeListeners","pristine"],"packageName":"component"},{"rootPath":"/","start":0,"end":68,"imports":[],"exports":[],"declarations":[],"classes":[],"interfaces":[{"name":"TextFormatter","isExported":true,"start":0,"end":67,"accessors":[],"properties":[],"methods":[{"name":"format","isAbstract":true,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":35,"end":65,"decorators":[],"parameters":[{"name":"value","type":"string","start":42,"end":55}],"variables":[]}],"extendsClauses":[],"implementsClauses":[]}],"enums":[],"resources":[],"usages":["format","value"],"packageName":"component"},{"rootPath":"/","start":0,"end":13952,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":89,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"fakeAsync"},{"specifier":"flush"},{"specifier":"TestBed"}]},{"libraryName":"@angular/core","start":90,"end":129,"specifiers":[{"specifier":"Injector"}]},{"libraryName":"component","start":130,"end":166,"specifiers":[{"specifier":"TreeGrid"}]},{"libraryName":"ag-grid-angular","start":167,"end":212,"specifiers":[{"specifier":"AgGridModule"}]},{"libraryName":"generated.property.grid","start":213,"end":278,"specifiers":[{"specifier":"GridColumn"}]},{"libraryName":"pipe","start":279,"end":338,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"modules.bpmn.provider","start":339,"end":418,"specifiers":[{"specifier":"TaskParamsProvider"}]},{"libraryName":"...testing","start":419,"end":467,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":468,"end":521,"specifiers":[{"specifier":"NgbModule"}]},{"libraryName":"modules.core.component","start":522,"end":622,"specifiers":[{"specifier":"ProgressIndicationComponent"}]},{"libraryName":"modules.core.service","start":623,"end":717,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"generated.model.grid","start":718,"end":784,"specifiers":[{"specifier":"TreeGridRows"}]},{"libraryName":"component","start":785,"end":815,"specifiers":[{"specifier":"Style"}]},{"libraryName":"generated.property.grid","start":816,"end":883,"specifiers":[{"specifier":"GridColumns"}]},{"libraryName":"generated.rpc","start":884,"end":955,"specifiers":[{"specifier":"TreeGridRpcService"}]},{"libraryName":"...testing","start":956,"end":1014,"specifiers":[{"specifier":"ConstantsUtil"}]},{"libraryName":"component.grid.enums","start":1015,"end":1090,"specifiers":[{"specifier":"GridLoadingOverlayType"}]},{"libraryName":"modules.core.storage","start":1091,"end":1159,"specifiers":[{"specifier":"WebbpmStorage"}]},{"libraryName":"component.grid.utils","start":1160,"end":1231,"specifiers":[{"specifier":"GridColumnStateUtils"}]},{"libraryName":"modules.core.service","start":1232,"end":1314,"specifiers":[{"specifier":"LocalStorageService"}]},{"libraryName":"generated.property.grid","start":1315,"end":1380,"specifiers":[{"specifier":"ColumnSort"}]},{"libraryName":"generated.ru.cg.webbpm.modules.database.api.dao.option","start":1381,"end":1475,"specifiers":[{"specifier":"SortOrder"}]}],"exports":[],"declarations":[{"name":"TEXT","isConst":true,"isExported":false,"start":1552,"end":1586},{"name":"COL_ID","isConst":true,"isExported":false,"start":1589,"end":1611},{"name":"COL_ID_REINIT","isConst":true,"isExported":false,"start":1614,"end":1648},{"name":"COL_SELECTOR","isConst":true,"isExported":false,"start":1651,"end":1695},{"name":"COL_SELECTOR_REINIT","isConst":true,"isExported":false,"start":1698,"end":1756},{"name":"DEFAULT_COLUMN_WIDTH","isConst":true,"isExported":false,"start":1759,"end":1792},{"name":"COLUMN_WIDTH","isConst":true,"isExported":false,"start":1795,"end":1820},{"name":"COLUMN_HEIGHT","isConst":true,"isExported":false,"start":1823,"end":1848},{"name":"STYLE_COLUMN_WIDTH","isConst":true,"isExported":false,"start":1851,"end":1905},{"name":"STYLE_COLUMN_HEIGHT","isConst":true,"isExported":false,"start":1908,"end":1965},{"name":"PARENT_LEVEL","isConst":true,"isExported":false,"start":1968,"end":2007},{"name":"CHILD_LEVEL","isConst":true,"isExported":false,"start":2010,"end":2048},{"name":"PARENT_GROUP_VALUE","isConst":true,"isExported":false,"start":2051,"end":2087},{"name":"PARENT_VALUE","isConst":true,"isExported":false,"start":2090,"end":2126},{"name":"CHILD_GROUP_VALUE1","isConst":true,"isExported":false,"start":2129,"end":2165},{"name":"CHILD_GROUP_VALUE2","isConst":true,"isExported":false,"start":2168,"end":2204},{"name":"CHILD_VALUE","isConst":true,"isExported":false,"start":2207,"end":2241},{"name":"COLUMN_NAME","isConst":true,"isExported":false,"start":2244,"end":2273},{"name":"CTRL_CLICK","isConst":true,"isExported":false,"start":2276,"end":2381},{"name":"component","isConst":false,"isExported":false,"type":"TreeGrid","start":2385,"end":2409},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture","start":2412,"end":2452},{"name":"treeGridRpcService","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2455,"end":2514},{"name":"progressIndicationSpy","isConst":false,"isExported":false,"type":"ProgressIndicationService","start":2517,"end":2570},{"name":"gridColumns","isConst":false,"isExported":false,"type":"GridColumns","start":2573,"end":2602},{"name":"gridColumn1","isConst":false,"isExported":false,"type":"GridColumn","start":2605,"end":2633},{"name":"gridColumn2","isConst":false,"isExported":false,"type":"GridColumn","start":2636,"end":2664},{"name":"treeGridRows","isConst":false,"isExported":false,"start":2667,"end":2684},{"name":"localStorageServiceSpy","isConst":false,"isExported":false,"type":"jasmine.SpyObj","start":2687,"end":2751},{"name":"el","isConst":false,"isExported":false,"type":"HTMLElement","start":2754,"end":2774},{"name":"gridApi","isConst":false,"isExported":false,"start":2777,"end":2789},{"name":"columnSort","isConst":false,"isExported":false,"start":4860,"end":4894},{"name":"getColumnDef","isExported":false,"isAsync":false,"start":6041,"end":6131,"parameters":[{"name":"fieldName","type":"string","start":6063,"end":6080}],"variables":[]},{"name":"triggerInitGrid","isExported":false,"isAsync":false,"start":6135,"end":6291,"parameters":[],"variables":[]},{"name":"childCount","isConst":true,"isExported":false,"start":6716,"end":6774},{"name":"groupValues","isConst":true,"isExported":false,"start":6988,"end":7047},{"name":"cellValues","isConst":true,"isExported":false,"start":7189,"end":7283},{"name":"containerWidth","isConst":true,"isExported":false,"start":7773,"end":7867},{"name":"columnWidth","isConst":true,"isExported":false,"start":7872,"end":7948},{"name":"leftRange","isConst":false,"isExported":false,"start":7953,"end":8025},{"name":"rightRange","isConst":false,"isExported":false,"start":8030,"end":8102},{"name":"columnWidth","isConst":true,"isExported":false,"start":8334,"end":8417},{"name":"columnWidth","isConst":true,"isExported":false,"start":9311,"end":9394},{"name":"rows","isConst":true,"isExported":false,"start":10168,"end":10245},{"name":"rows","isConst":true,"isExported":false,"start":10432,"end":10509},{"name":"rowNumbers","isConst":true,"isExported":false,"start":10753,"end":10821},{"name":"rowNumbers","isConst":true,"isExported":false,"start":11150,"end":11218},{"name":"checkBoxes","isConst":false,"isExported":false,"start":11633,"end":11722},{"name":"grid","isConst":false,"isExported":false,"start":12774,"end":12811},{"name":"style","isConst":false,"isExported":false,"start":13092,"end":13116},{"name":"grid","isConst":true,"isExported":false,"type":"HTMLElement","start":13440,"end":13502}],"classes":[],"interfaces":[],"enums":[],"resources":[],"usages":["jasmine","createSpyObj","describe","TEXT","COL_ID","COL_ID_REINIT","COL_SELECTOR","COL_SELECTOR_REINIT","DEFAULT_COLUMN_WIDTH","COLUMN_WIDTH","COLUMN_HEIGHT","STYLE_COLUMN_WIDTH","STYLE_COLUMN_HEIGHT","PARENT_LEVEL","CHILD_LEVEL","PARENT_GROUP_VALUE","PARENT_VALUE","CHILD_GROUP_VALUE1","CHILD_GROUP_VALUE2","CHILD_VALUE","COLUMN_NAME","CTRL_CLICK","MouseEvent","view","window","bubbles","ctrlKey","component","TreeGrid","fixture","ComponentFixture","treeGridRpcService","SpyObj","TreeGridRpcService","progressIndicationSpy","ProgressIndicationService","gridColumns","GridColumns","gridColumn1","GridColumn","gridColumn2","treeGridRows","localStorageServiceSpy","LocalStorageService","el","HTMLElement","gridApi","TestUtil","beforeEach","async","TestBed","declarations","EmptyIfNullPipe","ProgressIndicationComponent","providers","Injector","provide","useValue","TaskParamsProvider","imports","AgGridModule","NgbModule","GridLoadingOverlayType","schema","table","entity","name","type","columnSort","ColumnSort","SortOrder","TreeGridRows","row_uid","entity$column1","entity$column2","showChildren","innerNodes","Promise","WebbpmStorage","GridColumnStateUtils","fieldName","it","expect","childCount","groupValues","cellValues","containerWidth","columnWidth","leftRange","Math","rightRange","triggerInitGrid","getColumnDef","fakeAsync","result","flush","rows","row","rowNumbers","i","Event","checkBoxes","checkBox","xit","grid","ConstantsUtil","style","Style"],"packageName":"component"},{"rootPath":"/","start":0,"end":5415,"imports":[{"libraryName":"@angular/core","start":0,"end":103,"specifiers":[{"specifier":"ChangeDetectionStrategy"},{"specifier":"ChangeDetectorRef"},{"specifier":"Component"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"modules.core.service","start":104,"end":177,"specifiers":[{"specifier":"MessagesService"}]},{"libraryName":"ag-grid-community","start":178,"end":290,"specifiers":[{"specifier":"IRowNode"},{"specifier":"GroupCellRenderer"},{"specifier":"ColDef"},{"specifier":"GroupCellRendererParams"},{"specifier":"RowClickedEvent"}]},{"libraryName":"generated.rpc","start":291,"end":362,"specifiers":[{"specifier":"TreeGridRpcService"}]},{"libraryName":"generated.model.grid","start":363,"end":429,"specifiers":[{"specifier":"TreeGridRows"}]},{"libraryName":"decorators","start":430,"end":476,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"decorators","start":477,"end":541,"specifiers":[{"specifier":"AdvancedProperty"}]},{"libraryName":"decorators","start":542,"end":588,"specifiers":[{"specifier":"NotNull"}]},{"libraryName":"component","start":589,"end":639,"specifiers":[{"specifier":"DynamicDataGrid"}]},{"libraryName":"generated.model","start":640,"end":689,"specifiers":[{"specifier":"Filter"}]},{"libraryName":"component.grid.utils","start":690,"end":757,"specifiers":[{"specifier":"GridColumnDefUtils"}]}],"exports":[],"declarations":[],"classes":[{"name":"TreeGrid","isExported":true,"start":759,"end":5414,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Component","parameters":["{\n selector: 'tree-grid',\n templateUrl: './../../../src/resources/template/component/TreeGrid.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n}"]}],"properties":[{"name":"messagesService","visibility":1,"type":"MessagesService","isOptional":false,"isStatic":false,"start":976,"end":1019,"decorators":[]},{"name":"treeGridRpcService","visibility":1,"type":"TreeGridRpcService","isOptional":false,"isStatic":false,"start":1023,"end":1072,"decorators":[]},{"name":"fixedRowName","visibility":1,"type":"string","isOptional":false,"isStatic":false,"start":1075,"end":1106,"decorators":[]},{"name":"selectGroupRowWithChildren","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1110,"end":1223,"decorators":[{"name":"Visible","parameters":["multiselectable == true && checkboxInMainColumn == true"]}]},{"name":"checkboxInMainColumn","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1226,"end":1263,"decorators":[]},{"name":"hideChildCount","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1266,"end":1297,"decorators":[]},{"name":"collapseOnLoad","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1300,"end":1331,"decorators":[]},{"name":"showFilteredChildren","visibility":2,"type":"boolean","isOptional":false,"isStatic":false,"start":1335,"end":1426,"decorators":[{"name":"Input","parameters":[]},{"name":"AdvancedProperty","parameters":[]},{"name":"NotNull","parameters":[]}]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1509,"end":1646,"decorators":[],"parameters":[],"variables":[]},{"name":"initColumnDefs","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":1650,"end":2028,"decorators":[],"parameters":[],"variables":[{"name":"columns","isConst":false,"isExported":false,"start":1683,"end":1729},{"name":"colDefs","isConst":false,"isExported":false,"start":1734,"end":1802},{"name":"columnDef","isConst":false,"isExported":false,"type":"ColDef","start":1837,"end":1898}]},{"name":"initFirstColumn","isAbstract":false,"visibility":1,"isOptional":false,"isStatic":false,"isAsync":false,"start":2032,"end":2577,"decorators":[],"parameters":[{"name":"firstColumn","start":2058,"end":2069}],"variables":[]},{"name":"refreshData","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":2581,"end":2688,"decorators":[],"parameters":[],"variables":[{"name":"filters","isConst":false,"isExported":false,"type":"Filter[]","start":2614,"end":2656}]},{"name":"getNodeChildDetails","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":2739,"end":3021,"decorators":[{"name":"Visible","parameters":["false"]}],"parameters":[{"name":"node","start":2786,"end":2790}],"variables":[]},{"name":"loadGrid","isAbstract":false,"visibility":1,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":3025,"end":4049,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":3044,"end":3061}],"variables":[]},{"name":"selectRow","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4053,"end":4299,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"id","type":"string","start":4083,"end":4093}],"variables":[{"name":"node","isConst":false,"isExported":false,"type":"IRowNode","start":4152,"end":4201}]},{"name":"selectRows","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4303,"end":4585,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"ids","type":"string[]","start":4334,"end":4347}],"variables":[{"name":"node","isConst":false,"isExported":false,"start":4434,"end":4473}]},{"name":"expandAllRowGroups","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4589,"end":4671,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"collapseAllRowGroups","isAbstract":false,"visibility":2,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":4675,"end":4761,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"getRowModelType","isAbstract":false,"visibility":2,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":4765,"end":4828,"decorators":[],"parameters":[],"variables":[]},{"name":"reload","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":4832,"end":5032,"decorators":[],"parameters":[{"name":"filters","type":"Filter[]","start":4846,"end":4863}],"variables":[]},{"name":"applyCollapseOnLoad","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":5036,"end":5234,"decorators":[],"parameters":[{"name":"gridRows","start":5056,"end":5064}],"variables":[]},{"name":"collapseRecursively","isAbstract":false,"visibility":0,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":5238,"end":5412,"decorators":[],"parameters":[{"name":"row","start":5266,"end":5269}],"variables":[]}],"extendsClauses":["DynamicDataGrid"],"implementsClauses":[],"ctor":{"name":"TreeGrid","start":1430,"end":1505,"parameters":[{"name":"el","type":"ElementRef","start":1442,"end":1456},{"name":"cd","type":"ChangeDetectorRef","start":1458,"end":1479}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Promise","TreeGridRpcService","columns","colDefs","column","columnDef","ColDef","GridColumnDefUtils","firstColumn","GroupCellRenderer","checkbox","innerRenderer","params","suppressCount","GroupCellRendererParams","filters","Filter","Visible","node","group","children","expanded","gridRows","TreeGridRows","reason","Error","console","id","IRowNode","ids","filter","row","Component","selector","templateUrl","changeDetection","ChangeDetectionStrategy","DynamicDataGrid","messagesService","MessagesService","treeGridRpcService","fixedRowName","selectGroupRowWithChildren","checkboxInMainColumn","hideChildCount","collapseOnLoad","Input","AdvancedProperty","NotNull","showFilteredChildren"],"packageName":"component"},{"rootPath":"/","start":0,"end":599,"imports":[{"libraryName":"@angular/core","start":0,"end":41,"specifiers":[{"specifier":"Injectable"}]},{"libraryName":"common","start":42,"end":92,"specifiers":[{"specifier":"Validatable"}]}],"exports":[],"declarations":[],"classes":[{"name":"ValidationService","isExported":true,"start":94,"end":598,"accessors":[],"getters":[],"setters":[],"decorators":[{"name":"Injectable","parameters":["{providedIn: 'root'}"]}],"properties":[],"methods":[{"name":"validate","isAbstract":false,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":164,"end":596,"decorators":[],"parameters":[{"name":"validators","type":"Validatable[]","start":173,"end":198}],"variables":[{"name":"neededValidators","isConst":false,"isExported":false,"start":224,"end":498}]}],"extendsClauses":[],"implementsClauses":[]}],"interfaces":[],"enums":[],"resources":[],"usages":["validators","Validatable","Promise","neededValidators","validator","valid","result","Injectable","providedIn"],"packageName":"component"},{"rootPath":"/","start":0,"end":4448,"imports":[{"libraryName":"@angular/core","start":0,"end":67,"specifiers":[{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"},{"specifier":"Input"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":68,"end":150,"specifiers":[{"specifier":"NgbModal"},{"specifier":"NgbModalOptions"},{"specifier":"NgbModalRef"}]},{"libraryName":"modules.core.service","start":151,"end":248,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"webbpm.event","start":249,"end":296,"specifiers":[{"specifier":"Event"}]},{"libraryName":"directive","start":297,"end":387,"specifiers":[{"specifier":"ConfirmationDialogComponent"}]},{"libraryName":"decorators","start":388,"end":437,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component","start":438,"end":473,"specifiers":[{"specifier":"Control"}]},{"libraryName":"webbpm.ui_scripting","start":474,"end":544,"specifiers":[{"specifier":"ActionService"}]},{"libraryName":"rxjs/operators","start":545,"end":583,"specifiers":[{"specifier":"filter"}]}],"exports":[],"declarations":[],"classes":[{"name":"AbstractButton","isExported":true,"start":614,"end":4447,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"caption","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":671,"end":705,"decorators":[{"name":"Input","parameters":[]}]},{"name":"confirmationText","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":708,"end":751,"decorators":[{"name":"Input","parameters":[]}]},{"name":"confirmBtnText","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":754,"end":834,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["confirmationText != null"]}]},{"name":"cancelConfirmBtnText","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":837,"end":923,"decorators":[{"name":"Input","parameters":[]},{"name":"Visible","parameters":["confirmationText != null"]}]},{"name":"clickEvent","visibility":2,"type":"Event","isOptional":false,"isStatic":false,"start":927,"end":998,"decorators":[{"name":"Visible","parameters":["false"]}]},{"name":"clickListeners","visibility":1,"type":"Function[]","isOptional":false,"isStatic":false,"start":1002,"end":1044,"decorators":[]},{"name":"ngbModal","visibility":1,"type":"NgbModal","isOptional":false,"isStatic":false,"start":1047,"end":1076,"decorators":[]},{"name":"confirmationDialogRef","visibility":1,"type":"NgbModalRef","isOptional":false,"isStatic":false,"start":1079,"end":1124,"decorators":[]},{"name":"options","visibility":1,"type":"NgbModalOptions","isOptional":false,"isStatic":false,"start":1127,"end":1194,"decorators":[]},{"name":"progressIndicationService","visibility":1,"type":"ProgressIndicationService","isOptional":false,"isStatic":false,"start":1197,"end":1260,"decorators":[]},{"name":"ready","visibility":0,"type":"boolean","isOptional":false,"isStatic":false,"start":1264,"end":1295,"decorators":[]}],"methods":[{"name":"initialize","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":1378,"end":1559,"decorators":[],"parameters":[],"variables":[]},{"name":"onClick","isAbstract":false,"visibility":2,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":1563,"end":2398,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[],"variables":[]},{"name":"doClickAndTrigger","isAbstract":false,"visibility":0,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":2402,"end":2999,"decorators":[],"parameters":[],"variables":[]},{"name":"isEnabled","isAbstract":false,"type":"boolean","isOptional":false,"isStatic":false,"isAsync":false,"start":3004,"end":3074,"decorators":[],"parameters":[],"variables":[]},{"name":"doClickActions","isAbstract":true,"type":"Promise","isOptional":false,"isStatic":false,"isAsync":false,"start":3078,"end":3117,"decorators":[],"parameters":[],"variables":[]},{"name":"closeConfirmationDialog","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":3121,"end":3248,"decorators":[],"parameters":[],"variables":[]},{"name":"addClickListener","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3252,"end":3367,"decorators":[],"parameters":[{"name":"onClickFunction","type":"Function","start":3269,"end":3294}],"variables":[]},{"name":"removeClickListener","isAbstract":false,"type":"void","isOptional":false,"isStatic":false,"isAsync":false,"start":3371,"end":3492,"decorators":[],"parameters":[{"name":"onClickFunction","type":"Function","start":3391,"end":3416}],"variables":[]},{"name":"setCaption","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":3496,"end":3594,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":3520,"end":3533}],"variables":[]},{"name":"setConfirmationText","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":3598,"end":3714,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":3631,"end":3644}],"variables":[]},{"name":"setСonfirmBtnText","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":3718,"end":3837,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":3756,"end":3769}],"variables":[]},{"name":"setCancelСonfirmBtnText","isAbstract":false,"visibility":2,"isOptional":false,"isStatic":false,"isAsync":false,"start":3841,"end":3972,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"value","type":"string","start":3885,"end":3898}],"variables":[]},{"name":"postStart","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":3976,"end":4445,"decorators":[],"parameters":[],"variables":[{"name":"actionService","isConst":false,"isExported":false,"start":4017,"end":4070},{"name":"subscription","isConst":false,"isExported":false,"start":4197,"end":4435}]}],"extendsClauses":["Control"],"implementsClauses":[],"ctor":{"name":"AbstractButton","start":1299,"end":1374,"parameters":[{"name":"el","type":"ElementRef","start":1311,"end":1325},{"name":"cd","type":"ChangeDetectorRef","start":1327,"end":1348}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","NgbModal","ProgressIndicationService","Visible","Promise","ConfirmationDialogComponent","reason","func","Function","console","onClickFunction","value","actionService","ActionService","subscription","filter","counter","author","Control","Input","caption","confirmationText","confirmBtnText","cancelConfirmBtnText","clickEvent","Event","clickListeners","ngbModal","confirmationDialogRef","NgbModalRef","options","NgbModalOptions","backdrop","progressIndicationService","ready"],"packageName":"component.button"},{"rootPath":"/","start":0,"end":532,"imports":[{"libraryName":"decorators","start":0,"end":49,"specifiers":[{"specifier":"Visible"}]},{"libraryName":"component.button","start":50,"end":98,"specifiers":[{"specifier":"AbstractButton"}]},{"libraryName":"@angular/core","start":99,"end":159,"specifiers":[{"specifier":"ChangeDetectorRef"},{"specifier":"ElementRef"}]}],"exports":[],"declarations":[],"classes":[{"name":"AbstractNavigatableButton","isExported":true,"start":198,"end":532,"accessors":[],"getters":[],"setters":[],"decorators":[],"properties":[{"name":"navigateTo","visibility":2,"type":"string","isOptional":false,"isStatic":false,"start":274,"end":300,"decorators":[]}],"methods":[{"name":"setNavigateTo","isAbstract":false,"isOptional":false,"isStatic":false,"isAsync":false,"start":383,"end":469,"decorators":[{"name":"Visible","parameters":[]}],"parameters":[{"name":"navigateTo","type":"string","start":410,"end":428}],"variables":[]},{"name":"getNavigateTo","isAbstract":false,"type":"string","isOptional":false,"isStatic":false,"isAsync":false,"start":473,"end":530,"decorators":[],"parameters":[],"variables":[]}],"extendsClauses":["AbstractButton"],"implementsClauses":[],"ctor":{"name":"AbstractNavigatableButton","start":304,"end":379,"parameters":[{"name":"el","type":"ElementRef","start":316,"end":330},{"name":"cd","type":"ChangeDetectorRef","start":332,"end":353}],"variables":[]}}],"interfaces":[],"enums":[],"resources":[],"usages":["el","ElementRef","cd","ChangeDetectorRef","Visible","navigateTo","author","AbstractButton"],"packageName":"component.button"},{"rootPath":"/","start":0,"end":6315,"imports":[{"libraryName":"@angular/core/testing","start":0,"end":95,"specifiers":[{"specifier":"async"},{"specifier":"ComponentFixture"},{"specifier":"fakeAsync"},{"specifier":"flush"},{"specifier":"TestBed"},{"specifier":"tick"}]},{"libraryName":"@angular/forms","start":96,"end":139,"specifiers":[{"specifier":"FormsModule"}]},{"libraryName":"@angular/common/http/testing","start":140,"end":209,"specifiers":[{"specifier":"HttpClientTestingModule"}]},{"libraryName":"@ng-bootstrap/ng-bootstrap","start":210,"end":263,"specifiers":[{"specifier":"NgbModule"}]},{"libraryName":"...testing","start":264,"end":315,"specifiers":[{"specifier":"TestUtil"}]},{"libraryName":"component.button","start":316,"end":348,"specifiers":[{"specifier":"Button"}]},{"libraryName":"modules.core.service","start":393,"end":490,"specifiers":[{"specifier":"ProgressIndicationService"}]},{"libraryName":"directive","start":491,"end":581,"specifiers":[{"specifier":"ConfirmationDialogComponent"}]},{"libraryName":"pipe","start":582,"end":644,"specifiers":[{"specifier":"EmptyIfNullPipe"}]},{"libraryName":"modules.bpmn.provider","start":645,"end":727,"specifiers":[{"specifier":"TaskParamsProvider"}]},{"libraryName":"component","start":728,"end":759,"specifiers":[{"specifier":"Style"}]},{"libraryName":"...testing","start":760,"end":821,"specifiers":[{"specifier":"ConstantsUtil"}]},{"libraryName":"webbpm.ui_scripting","start":822,"end":892,"specifiers":[{"specifier":"ActionService"}]},{"libraryName":"rxjs/operators","start":893,"end":931,"specifiers":[{"specifier":"filter"}]}],"exports":[],"declarations":[{"name":"TEXT","isConst":true,"isExported":false,"start":962,"end":996},{"name":"component","isConst":false,"isExported":false,"type":"Button","start":999,"end":1021},{"name":"fixture","isConst":false,"isExported":false,"type":"ComponentFixture

      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