增加NS域名分组、批量添加域名和记录接口

This commit is contained in:
GoEdgeLab
2022-08-06 20:29:26 +08:00
parent dabfbe2849
commit 29c6a16fd1
29 changed files with 8316 additions and 5874 deletions

View File

@@ -4,6 +4,7 @@ option go_package = "./pb";
package pb;
import "models/model_ns_cluster.proto";
import "models/model_ns_domain_group.proto";
import "models/model_user.proto";
// DNS域名
@@ -15,7 +16,9 @@ message NSDomain {
bool isDeleted = 5;
int64 version = 6;
bytes tsigJSON = 7;
repeated int64 nsDomainGroupIds = 8;
NSCluster nsCluster = 30;
User user = 31;
repeated NSDomainGroup nsDomainGroups = 32;
}

View File

@@ -0,0 +1,12 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
// 域名分组
message NSDomainGroup {
int64 id = 1;
string name = 2;
bool isOn = 3;
int64 userId = 4;
}

View File

@@ -21,7 +21,7 @@ service NodePriceItemService {
rpc findAllEnabledNodePriceItems (FindAllEnabledNodePriceItemsRequest) returns (FindAllEnabledNodePriceItemsResponse);
// 查找所有启用的区域价格
rpc findAllEnabledAndOnNodePriceItems (FindAllEnabledAndOnNodePriceItemsRequest) returns (FindAllEnabledAndOnNodePriceItemsResponse);
rpc findAllAvailableNodePriceItems (FindAllAvailableNodePriceItemsRequest) returns (FindAllAvailableNodePriceItemsResponse);
// 查找单个区域信息
rpc findEnabledNodePriceItem (FindEnabledNodePriceItemRequest) returns (FindEnabledNodePriceItemResponse);
@@ -63,11 +63,11 @@ message FindAllEnabledNodePriceItemsResponse {
}
// 查找所有启用的区域价格
message FindAllEnabledAndOnNodePriceItemsRequest {
message FindAllAvailableNodePriceItemsRequest {
string type = 1;
}
message FindAllEnabledAndOnNodePriceItemsResponse {
message FindAllAvailableNodePriceItemsResponse {
repeated NodePriceItem NodePriceItems = 1;
}

View File

@@ -21,7 +21,7 @@ service NodeRegionService {
rpc findAllEnabledNodeRegions (FindAllEnabledNodeRegionsRequest) returns (FindAllEnabledNodeRegionsResponse);
// 查找所有启用的区域
rpc findAllEnabledAndOnNodeRegions (FindAllEnabledAndOnNodeRegionsRequest) returns (FindAllEnabledAndOnNodeRegionsResponse);
rpc findAllAvailableNodeRegions (FindAllAvailableNodeRegionsRequest) returns (FindAllAvailableNodeRegionsResponse);
// 排序
rpc updateNodeRegionOrders (UpdateNodeRegionOrdersRequest) returns (RPCSuccess);
@@ -66,11 +66,11 @@ message FindAllEnabledNodeRegionsResponse {
}
// 查找所有启用的区域
message FindAllEnabledAndOnNodeRegionsRequest {
message FindAllAvailableNodeRegionsRequest {
}
message FindAllEnabledAndOnNodeRegionsResponse {
message FindAllAvailableNodeRegionsResponse {
repeated NodeRegion nodeRegions = 1;
}

View File

@@ -24,16 +24,16 @@ service NSClusterService {
rpc deleteNSCluster (DeleteNSCluster) returns (RPCSuccess);
// 查找单个可用集群信息
rpc findEnabledNSCluster (FindEnabledNSClusterRequest) returns (FindEnabledNSClusterResponse);
rpc findNSCluster (FindNSClusterRequest) returns (FindNSClusterResponse);
// 计算所有可用集群的数量
rpc countAllEnabledNSClusters (CountAllEnabledNSClustersRequest) returns (RPCCountResponse);
rpc countAllNSClusters (CountAllNSClustersRequest) returns (RPCCountResponse);
// 列出单页可用集群
rpc listEnabledNSClusters (ListEnabledNSClustersRequest) returns (ListEnabledNSClustersResponse);
rpc listNSClusters (ListNSClustersRequest) returns (ListNSClustersResponse);
// 查找所有可用集群
rpc findAllEnabledNSClusters (FindAllEnabledNSClustersRequest) returns (FindAllEnabledNSClustersResponse);
rpc findAllNSClusters (FindAllNSClustersRequest) returns (FindAllNSClustersResponse);
// 设置递归DNS配置
rpc updateNSClusterRecursionConfig(UpdateNSClusterRecursionConfigRequest) returns (RPCSuccess);
@@ -101,34 +101,34 @@ message DeleteNSCluster {
}
// 查找单个可用集群信息
message FindEnabledNSClusterRequest {
message FindNSClusterRequest {
int64 nsClusterId = 1;
}
message FindEnabledNSClusterResponse {
message FindNSClusterResponse {
NSCluster nsCluster = 1;
}
// 计算所有可用集群的数量
message CountAllEnabledNSClustersRequest {
message CountAllNSClustersRequest {
}
// 列出单页可用集群
message ListEnabledNSClustersRequest {
message ListNSClustersRequest {
int64 offset = 1;
int64 size = 2;
}
message ListEnabledNSClustersResponse {
message ListNSClustersResponse {
repeated NSCluster nsClusters = 1;
}
// 查找所有可用集群
message FindAllEnabledNSClustersRequest {
message FindAllNSClustersRequest {
}
message FindAllEnabledNSClustersResponse {
message FindAllNSClustersResponse {
repeated NSCluster nsClusters = 1;
}

View File

@@ -8,9 +8,12 @@ import "models/rpc_messages.proto";
// 域名相关服务
service NSDomainService {
// 创建域名
// 创建单个域名
rpc createNSDomain (CreateNSDomainRequest) returns (CreateNSDomainResponse);
// 批量创建域名
rpc createNSDomains(CreateNSDomainsRequest) returns (CreateNSDomainsResponse);
// 修改域名
rpc updateNSDomain (UpdateNSDomainRequest) returns (RPCSuccess);
@@ -18,41 +21,58 @@ service NSDomainService {
rpc deleteNSDomain (DeleteNSDomainRequest) returns (RPCSuccess);
// 查找单个域名
rpc findEnabledNSDomain (FindEnabledNSDomainRequest) returns (FindEnabledNSDomainResponse);
rpc findNSDomain (FindNSDomainRequest) returns (FindNSDomainResponse);
// 计算域名数量
rpc countAllEnabledNSDomains (CountAllEnabledNSDomainsRequest) returns (RPCCountResponse);
rpc countAllNSDomains (CountAllNSDomainsRequest) returns (RPCCountResponse);
// 列出单页域名
rpc listEnabledNSDomains (ListEnabledNSDomainsRequest) returns (ListEnabledNSDomainsResponse);
rpc listNSDomains (ListNSDomainsRequest) returns (ListNSDomainsResponse);
// 根据版本列出一组域名
rpc listNSDomainsAfterVersion (ListNSDomainsAfterVersionRequest) returns (ListNSDomainsAfterVersionResponse);
// 查找TSIG配置
rpc findEnabledNSDomainTSIG (FindEnabledNSDomainTSIGRequest) returns (FindEnabledNSDomainTSIGResponse);
rpc findNSDomainTSIG (FindNSDomainTSIGRequest) returns (FindNSDomainTSIGResponse);
// 修改TSIG配置
rpc updateNSDomainTSIG (UpdateNSDomainTSIGRequest) returns (RPCSuccess);
// 检查一组域名是否存在
rpc existNSDomains(ExistNSDomainsRequest) returns (ExistNSDomainsResponse);
}
// 创建域名
// 创建单个域名
message CreateNSDomainRequest {
int64 nsClusterId = 1;
int64 userId = 2;
string name = 3;
int64 nsClusterId = 1; // 所属集群
int64 userId = 2; // 所属用户
string name = 3; // 域名
repeated int64 nsDomainGroupIds = 4; // 域名分组ID
}
message CreateNSDomainResponse {
int64 nsDomainId = 1;
}
// 批量创建域名
message CreateNSDomainsRequest {
int64 nsClusterId = 1; // 所属集群
int64 userId = 2; // 所属用户
repeated string names = 3; // 一组域名
repeated int64 nsDomainGroupIds = 4; // 域名分组ID
}
message CreateNSDomainsResponse {
repeated int64 nsDomainIds = 1;
}
// 修改域名
// 注意:名称不能修改
message UpdateNSDomainRequest {
int64 nsDomainId = 1;
int64 nsClusterId = 2;
int64 userId = 3;
repeated int64 nsDomainGroupIds = 5; // 域名分组ID
bool isOn = 4;
}
@@ -62,31 +82,33 @@ message DeleteNSDomainRequest {
}
// 查找单个域名
message FindEnabledNSDomainRequest {
message FindNSDomainRequest {
int64 nsDomainId = 1;
}
message FindEnabledNSDomainResponse {
message FindNSDomainResponse {
NSDomain nsDomain = 1;
}
// 计算域名数量
message CountAllEnabledNSDomainsRequest {
message CountAllNSDomainsRequest {
int64 userId = 1;
int64 nsClusterId = 2;
string keyword = 3;
int64 nsDomainGroupId = 4;
}
// 列出单页域名
message ListEnabledNSDomainsRequest {
message ListNSDomainsRequest {
int64 userId = 1;
int64 nsClusterId = 2;
string keyword = 3;
int64 nsDomainGroupId = 6;
int64 offset = 4;
int64 size = 5;
}
message ListEnabledNSDomainsResponse {
message ListNSDomainsResponse {
repeated NSDomain nsDomains = 1;
}
@@ -101,11 +123,11 @@ message ListNSDomainsAfterVersionResponse {
}
// 查找TSIG配置
message FindEnabledNSDomainTSIGRequest {
message FindNSDomainTSIGRequest {
int64 nsDomainId = 1;
}
message FindEnabledNSDomainTSIGResponse {
message FindNSDomainTSIGResponse {
bytes tsigJSON = 1;
}
@@ -113,4 +135,14 @@ message FindEnabledNSDomainTSIGResponse {
message UpdateNSDomainTSIGRequest {
int64 nsDomainId = 1;
bytes tsigJSON = 2;
}
// 检查一组域名是否存在
message ExistNSDomainsRequest {
repeated string names = 1;
int64 userId = 2;
}
message ExistNSDomainsResponse {
repeated string existingNames = 1;
}

View File

@@ -0,0 +1,84 @@
syntax = "proto3";
option go_package = "./pb";
package pb;
import "models/model_ns_domain_group.proto";
import "models/rpc_messages.proto";
// 域名分组服务
service NSDomainGroupService {
// 创建分组
rpc createNSDomainGroup(CreateNSDomainGroupRequest) returns (CreateNSDomainGroupResponse);
// 修改分组
rpc updateNSDomainGroup(UpdateNSDomainGroupRequest) returns (RPCSuccess);
// 删除分组
rpc deleteNSDomainGroup(DeleteNSDomainGroupRequest) returns (RPCSuccess);
// 查询所有分组
rpc findAllNSDomainGroups(FindAllNSDomainGroupsRequest) returns (FindAllNSDomainGroupsResponse);
// 查询可用分组数量
rpc countAllAvailableNSDomainGroups(CountAllAvailableNSDomainGroupsRequest) returns (RPCCountResponse);
// 查询所有启用分组
rpc findAllAvailableNSDomainGroups(FindAllAvailableNSDomainGroupsRequest) returns (FindAllAvailableNSDomainGroupsResponse);
// 查找单个分组
rpc findNSDomainGroup(FindNSDomainGroupRequest) returns (FindNSDomainGroupResponse);
}
// 创建分组
message CreateNSDomainGroupRequest {
string name = 1;
}
message CreateNSDomainGroupResponse {
int64 nsDomainGroupId = 1;
}
// 修改分组
message UpdateNSDomainGroupRequest {
int64 nsDomainGroupId = 1;
string name = 2;
bool isOn = 3;
}
// 删除分组
message DeleteNSDomainGroupRequest {
int64 nsDomainGroupId = 1;
}
// 查询所有分组
message FindAllNSDomainGroupsRequest {
int64 userId = 1;
}
message FindAllNSDomainGroupsResponse {
repeated NSDomainGroup nsDomainGroups = 1;
}
// 查询可用分组数量
message CountAllAvailableNSDomainGroupsRequest {
int64 userId = 1;
}
// 查询所有启用分组
message FindAllAvailableNSDomainGroupsRequest {
int64 userId = 1;
}
message FindAllAvailableNSDomainGroupsResponse {
repeated NSDomainGroup nsDomainGroups = 1;
}
// 查找单个分组
message FindNSDomainGroupRequest {
int64 nsDomainGroupId = 1;
}
message FindNSDomainGroupResponse {
NSDomainGroup nsDomainGroup = 1;
}

View File

@@ -18,13 +18,13 @@ service NSKeyService {
rpc deleteNSKey (DeleteNSKeyRequest) returns (RPCSuccess);
// 查找单个密钥
rpc findEnabledNSKey (FindEnabledNSKeyRequest) returns (FindEnabledNSKeyResponse);
rpc findNSKey (FindNSKeyRequest) returns (FindNSKeyResponse);
// 计算密钥数量
rpc countAllEnabledNSKeys (CountAllEnabledNSKeysRequest) returns (RPCCountResponse);
rpc countAllNSKeys (CountAllNSKeysRequest) returns (RPCCountResponse);
// 列出单页密钥
rpc listEnabledNSKeys (ListEnabledNSKeysRequest) returns (ListEnabledNSKeysResponse);
rpc listNSKeys (ListNSKeysRequest) returns (ListNSKeysResponse);
// 根据版本列出一组密钥
rpc listNSKeysAfterVersion (ListNSKeysAfterVersionRequest) returns (ListNSKeysAfterVersionResponse);
@@ -60,29 +60,29 @@ message DeleteNSKeyRequest {
}
// 查找单个密钥
message FindEnabledNSKeyRequest {
message FindNSKeyRequest {
int64 nsKeyId = 1;
}
message FindEnabledNSKeyResponse {
message FindNSKeyResponse {
NSKey nsKey = 1;
}
// 计算密钥数量
message CountAllEnabledNSKeysRequest {
message CountAllNSKeysRequest {
int64 nsDomainId = 1;
int64 nsZoneId = 2;
}
// 列出单页密钥
message ListEnabledNSKeysRequest {
message ListNSKeysRequest {
int64 nsDomainId = 1;
int64 nsZoneId = 2;
int64 offset = 3;
int64 size = 4;
}
message ListEnabledNSKeysResponse {
message ListNSKeysResponse {
repeated NSKey nsKeys = 1;
}

View File

@@ -11,16 +11,16 @@ import "models/model_node_login.proto";
// 域名服务器节点服务
service NSNodeService {
// 根据集群查找所有节点
rpc findAllEnabledNSNodesWithNSClusterId (FindAllEnabledNSNodesWithNSClusterIdRequest) returns (FindAllEnabledNSNodesWithNSClusterIdResponse);
rpc findAllNSNodesWithNSClusterId (FindAllNSNodesWithNSClusterIdRequest) returns (FindAllNSNodesWithNSClusterIdResponse);
// 所有可用的节点数量
rpc countAllEnabledNSNodes (CountAllEnabledNSNodesRequest) returns (RPCCountResponse);
rpc countAllNSNodes (CountAllNSNodesRequest) returns (RPCCountResponse);
// 计算匹配的节点数量
rpc countAllEnabledNSNodesMatch (CountAllEnabledNSNodesMatchRequest) returns (RPCCountResponse);
rpc countAllNSNodesMatch (CountAllNSNodesMatchRequest) returns (RPCCountResponse);
// 列出单页节点
rpc listEnabledNSNodesMatch (ListEnabledNSNodesMatchRequest) returns (ListEnabledNSNodesMatchResponse);
rpc listNSNodesMatch (ListNSNodesMatchRequest) returns (ListNSNodesMatchResponse);
// 计算需要升级的节点数量
rpc countAllUpgradeNSNodesWithNSClusterId (CountAllUpgradeNSNodesWithNSClusterIdRequest) returns (RPCCountResponse);
@@ -32,7 +32,7 @@ service NSNodeService {
rpc deleteNSNode (DeleteNSNodeRequest) returns (RPCSuccess);
// 获取单个节点信息
rpc findEnabledNSNode (FindEnabledNSNodeRequest) returns (FindEnabledNSNodeResponse);
rpc findNSNode (FindNSNodeRequest) returns (FindNSNodeResponse);
// 修改节点
rpc updateNSNode (UpdateNSNodeRequest) returns (RPCSuccess);
@@ -78,21 +78,21 @@ service NSNodeService {
}
// 根据集群查找所有节点
message FindAllEnabledNSNodesWithNSClusterIdRequest {
message FindAllNSNodesWithNSClusterIdRequest {
int64 nsClusterId = 1;
}
message FindAllEnabledNSNodesWithNSClusterIdResponse {
message FindAllNSNodesWithNSClusterIdResponse {
repeated NSNode nsNodes = 1;
}
// 所有可用的节点数量
message CountAllEnabledNSNodesRequest {
message CountAllNSNodesRequest {
}
// 计算匹配的节点数量
message CountAllEnabledNSNodesMatchRequest {
message CountAllNSNodesMatchRequest {
int64 nsClusterId = 1;
int32 installState = 2;
int32 activeState = 3;
@@ -102,7 +102,7 @@ message CountAllEnabledNSNodesMatchRequest {
}
// 列出单页节点
message ListEnabledNSNodesMatchRequest {
message ListNSNodesMatchRequest {
int64 offset = 1;
int64 size = 2;
int64 nsClusterId = 3;
@@ -113,7 +113,7 @@ message ListEnabledNSNodesMatchRequest {
//int64 nodeRegionId = 8;
}
message ListEnabledNSNodesMatchResponse {
message ListNSNodesMatchResponse {
repeated NSNode nsNodes = 1;
}
@@ -139,11 +139,11 @@ message DeleteNSNodeRequest {
}
// 获取单个节点信息
message FindEnabledNSNodeRequest {
message FindNSNodeRequest {
int64 nsNodeId = 1;
}
message FindEnabledNSNodeResponse {
message FindNSNodeResponse {
NSNode nsNode = 1;
}

View File

@@ -11,6 +11,9 @@ service NSRecordService {
// 创建记录
rpc createNSRecord (CreateNSRecordRequest) returns (CreateNSRecordResponse);
// 批量创建记录
rpc createNSRecords(CreateNSRecordsRequest) returns (CreateNSRecordsResponse);
// 修改记录
rpc updateNSRecord (UpdateNSRecordRequest) returns (RPCSuccess);
@@ -18,13 +21,13 @@ service NSRecordService {
rpc deleteNSRecord (DeleteNSRecordRequest) returns (RPCSuccess);
// 计算记录数量
rpc countAllEnabledNSRecords (CountAllEnabledNSRecordsRequest) returns (RPCCountResponse);
rpc countAllNSRecords (CountAllNSRecordsRequest) returns (RPCCountResponse);
// 读取单页记录
rpc listEnabledNSRecords (ListEnabledNSRecordsRequest) returns (ListEnabledNSRecordsResponse);
rpc listNSRecords (ListNSRecordsRequest) returns (ListNSRecordsResponse);
// 查询单个记录信息
rpc findEnabledNSRecord (FindEnabledNSRecordRequest) returns (FindEnabledNSRecordResponse);
rpc findNSRecord (FindNSRecordRequest) returns (FindNSRecordResponse);
// 根据版本列出一组记录
rpc listNSRecordsAfterVersion (ListNSRecordsAfterVersionRequest) returns (ListNSRecordsAfterVersionResponse);
@@ -46,6 +49,21 @@ message CreateNSRecordResponse {
int64 nsRecordId = 1;
}
// 批量创建记录
message CreateNSRecordsRequest {
int64 nsDomainId = 1;
string description = 2;
repeated string names = 3;
string type = 4;
string value = 5;
int32 ttl = 6;
repeated string nsRouteCodes = 7; // 路线代号
}
message CreateNSRecordsResponse {
repeated int64 nsRecordIds = 1;
}
// 修改记录
message UpdateNSRecordRequest {
int64 nsRecordId = 1;
@@ -65,7 +83,7 @@ message DeleteNSRecordRequest {
}
// 计算记录数量
message CountAllEnabledNSRecordsRequest {
message CountAllNSRecordsRequest {
int64 nsDomainId = 1;
string type = 2;
int64 nsRouteId = 3 [deprecated = true]; // 使用nsRouteCode代替
@@ -74,7 +92,7 @@ message CountAllEnabledNSRecordsRequest {
}
// 读取单页记录
message ListEnabledNSRecordsRequest {
message ListNSRecordsRequest {
int64 nsDomainId = 1;
string type = 2;
int64 nsRouteId = 3 [deprecated = true]; // 使用nsRouteCode代替
@@ -84,16 +102,16 @@ message ListEnabledNSRecordsRequest {
int64 size = 6;
}
message ListEnabledNSRecordsResponse {
message ListNSRecordsResponse {
repeated NSRecord nsRecords = 1;
}
// 查询单个记录信息
message FindEnabledNSRecordRequest {
message FindNSRecordRequest {
int64 nsRecordId = 1;
}
message FindEnabledNSRecordResponse {
message FindNSRecordResponse {
NSRecord nsRecord = 1;
}

View File

@@ -18,10 +18,10 @@ service NSRouteService {
rpc deleteNSRoute (DeleteNSRouteRequest) returns (RPCSuccess);
// 获取单个路线信息
rpc findEnabledNSRoute (FindEnabledNSRouteRequest) returns (FindEnabledNSRouteResponse);
rpc findNSRoute (FindNSRouteRequest) returns (FindNSRouteResponse);
// 读取所有线路
rpc findAllEnabledNSRoutes (FindAllEnabledNSRoutesRequest) returns (FindAllEnabledNSRoutesResponse);
rpc findAllNSRoutes (FindAllNSRoutesRequest) returns (FindAllNSRoutesResponse);
// 设置线路排序
rpc updateNSRouteOrders (UpdateNSRouteOrdersRequest) returns (RPCSuccess);
@@ -56,22 +56,22 @@ message DeleteNSRouteRequest {
}
// 获取单个路线信息
message FindEnabledNSRouteRequest {
message FindNSRouteRequest {
int64 nsRouteId = 1;
}
message FindEnabledNSRouteResponse {
message FindNSRouteResponse {
NSRoute nsRoute = 1;
}
// 读取所有线路
message FindAllEnabledNSRoutesRequest {
message FindAllNSRoutesRequest {
int64 nsClusterId = 1;
int64 nsDomainId = 2;
int64 userId = 3;
}
message FindAllEnabledNSRoutesResponse {
message FindAllNSRoutesResponse {
repeated NSRoute nsRoutes = 1;
}

View File

@@ -27,7 +27,7 @@ service OrderMethodService {
rpc findAllEnabledOrderMethods(FindAllEnabledOrderMethodsRequest) returns (FindAllEnabledOrderMethodsResponse);
// 查找所有已启用的支付方式
rpc findAllEnabledAndOnOrderMethods(FindAllEnabledAndOnOrderMethodsRequest) returns (FindAllEnabledAndOnOrderMethodsResponse);
rpc findAllAvailableOrderMethods(FindAllAvailableOrderMethodsRequest) returns (FindAllAvailableOrderMethodsResponse);
}
// 创建支付方式
@@ -85,10 +85,10 @@ message FindAllEnabledOrderMethodsResponse {
}
// 查找所有已启用的支付方式
message FindAllEnabledAndOnOrderMethodsRequest {
message FindAllAvailableOrderMethodsRequest {
}
message FindAllEnabledAndOnOrderMethodsResponse {
message FindAllAvailableOrderMethodsResponse {
repeated OrderMethod orderMethods = 1;
}

View File

@@ -21,7 +21,7 @@ service UserTicketCategoryService {
rpc findAllUserTicketCategories(FindAllUserTicketCategoriesRequest) returns (FindAllUserTicketCategoriesResponse);
// 查找所有启用中的分类
rpc findAllOnUserTicketCategories(FindAllOnUserTicketCategoriesRequest) returns (FindAllOnUserTicketCategoriesResponse);
rpc findAllAvailableUserTicketCategories(FindAllAvailableUserTicketCategoriesRequest) returns (FindAllAvailableUserTicketCategoriesResponse);
// 查询单个分类
rpc findUserTicketCategory(FindUserTicketCategoryRequest) returns (FindUserTicketCategoryResponse);
@@ -58,11 +58,11 @@ message FindAllUserTicketCategoriesResponse {
}
// 查找所有启用中的分类
message FindAllOnUserTicketCategoriesRequest {
message FindAllAvailableUserTicketCategoriesRequest {
}
message FindAllOnUserTicketCategoriesResponse {
message FindAllAvailableUserTicketCategoriesResponse {
repeated UserTicketCategory userTicketCategories = 1;
}