alibabacloud-vpc20160428 6.9.6__tar.gz → 6.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/ChangeLog.md +29 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/PKG-INFO +1 -1
- alibabacloud_vpc20160428-6.10.0/alibabacloud_vpc20160428/__init__.py +1 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428/client.py +116 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428/models.py +154 -2
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428.egg-info/PKG-INFO +1 -1
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/setup.py +1 -1
- alibabacloud_vpc20160428-6.9.6/alibabacloud_vpc20160428/__init__.py +0 -1
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/LICENSE +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/MANIFEST.in +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/README-CN.md +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/README.md +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428.egg-info/SOURCES.txt +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428.egg-info/dependency_links.txt +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428.egg-info/requires.txt +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/alibabacloud_vpc20160428.egg-info/top_level.txt +0 -0
- {alibabacloud_vpc20160428-6.9.6 → alibabacloud_vpc20160428-6.10.0}/setup.cfg +0 -0
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
2024-12-18 Version: 6.9.6
|
|
2
|
+
- Update API CreateExpressConnectTrafficQos: add param ResourceGroupId.
|
|
3
|
+
- Update API CreateExpressConnectTrafficQos: add param Tags.
|
|
4
|
+
- Update API CreateForwardEntry: add param DryRun.
|
|
5
|
+
- Update API CreateSnatEntry: add param DryRun.
|
|
6
|
+
- Update API CreateVpnAttachment: add param EnableTunnelsBgp.
|
|
7
|
+
- Update API CreateVpnAttachment: add param TunnelOptionsSpecification.
|
|
8
|
+
- Update API CreateVpnAttachment: update param CustomerGatewayId.
|
|
9
|
+
- Update API CreateVpnAttachment: update param RemoteCaCert.
|
|
10
|
+
- Update API DescribeExpressConnectTrafficQos: add param ResourceGroupId.
|
|
11
|
+
- Update API DescribeExpressConnectTrafficQos: add param Tags.
|
|
12
|
+
- Update API DescribeExpressConnectTrafficQos: update response param.
|
|
13
|
+
- Update API DescribeVcoRouteEntries: update response param.
|
|
14
|
+
- Update API DescribeVpnAttachments: update response param.
|
|
15
|
+
- Update API DescribeVpnConnection: update response param.
|
|
16
|
+
- Update API DescribeVpnConnections: update response param.
|
|
17
|
+
- Update API DescribeVpnRouteEntries: update response param.
|
|
18
|
+
- Update API ModifyForwardEntry: add param DryRun.
|
|
19
|
+
- Update API ModifyForwardEntry: update response param.
|
|
20
|
+
- Update API ModifyRouteEntry: update param RouteEntryId.
|
|
21
|
+
- Update API ModifySnatEntry: add param DryRun.
|
|
22
|
+
- Update API ModifyTunnelAttribute: update param TunnelOptionsSpecification.
|
|
23
|
+
- Update API ModifyVpnAttachmentAttribute: add param EnableTunnelsBgp.
|
|
24
|
+
- Update API ModifyVpnAttachmentAttribute: add param TunnelOptionsSpecification.
|
|
25
|
+
- Update API ModifyVpnAttachmentAttribute: update param RemoteCaCert.
|
|
26
|
+
- Update API ModifyVpnAttachmentAttribute: update response param.
|
|
27
|
+
- Update API ModifyVpnConnectionAttribute: update param TunnelOptionsSpecification.
|
|
28
|
+
|
|
29
|
+
|
|
1
30
|
2024-11-29 Version: 6.9.5
|
|
2
31
|
- Update API CreateVpnAttachment: add param EnableTunnelsBgp.
|
|
3
32
|
- Update API CreateVpnAttachment: add param TunnelOptionsSpecification.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '6.10.0'
|
|
@@ -52553,6 +52553,122 @@ class Client(OpenApiClient):
|
|
|
52553
52553
|
runtime = util_models.RuntimeOptions()
|
|
52554
52554
|
return await self.terminate_virtual_border_router_with_options_async(request, runtime)
|
|
52555
52555
|
|
|
52556
|
+
def transform_eip_segment_to_public_ip_address_pool_with_options(
|
|
52557
|
+
self,
|
|
52558
|
+
request: vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolRequest,
|
|
52559
|
+
runtime: util_models.RuntimeOptions,
|
|
52560
|
+
) -> vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse:
|
|
52561
|
+
"""
|
|
52562
|
+
@summary 连续EIP组转换为公网IP地址池
|
|
52563
|
+
|
|
52564
|
+
@param request: TransformEipSegmentToPublicIpAddressPoolRequest
|
|
52565
|
+
@param runtime: runtime options for this request RuntimeOptions
|
|
52566
|
+
@return: TransformEipSegmentToPublicIpAddressPoolResponse
|
|
52567
|
+
"""
|
|
52568
|
+
UtilClient.validate_model(request)
|
|
52569
|
+
query = {}
|
|
52570
|
+
if not UtilClient.is_unset(request.client_token):
|
|
52571
|
+
query['ClientToken'] = request.client_token
|
|
52572
|
+
if not UtilClient.is_unset(request.description):
|
|
52573
|
+
query['Description'] = request.description
|
|
52574
|
+
if not UtilClient.is_unset(request.instance_id):
|
|
52575
|
+
query['InstanceId'] = request.instance_id
|
|
52576
|
+
if not UtilClient.is_unset(request.name):
|
|
52577
|
+
query['Name'] = request.name
|
|
52578
|
+
if not UtilClient.is_unset(request.region_id):
|
|
52579
|
+
query['RegionId'] = request.region_id
|
|
52580
|
+
if not UtilClient.is_unset(request.resource_group_id):
|
|
52581
|
+
query['ResourceGroupId'] = request.resource_group_id
|
|
52582
|
+
req = open_api_models.OpenApiRequest(
|
|
52583
|
+
query=OpenApiUtilClient.query(query)
|
|
52584
|
+
)
|
|
52585
|
+
params = open_api_models.Params(
|
|
52586
|
+
action='TransformEipSegmentToPublicIpAddressPool',
|
|
52587
|
+
version='2016-04-28',
|
|
52588
|
+
protocol='HTTPS',
|
|
52589
|
+
pathname='/',
|
|
52590
|
+
method='POST',
|
|
52591
|
+
auth_type='AK',
|
|
52592
|
+
style='RPC',
|
|
52593
|
+
req_body_type='formData',
|
|
52594
|
+
body_type='json'
|
|
52595
|
+
)
|
|
52596
|
+
return TeaCore.from_map(
|
|
52597
|
+
vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse(),
|
|
52598
|
+
self.call_api(params, req, runtime)
|
|
52599
|
+
)
|
|
52600
|
+
|
|
52601
|
+
async def transform_eip_segment_to_public_ip_address_pool_with_options_async(
|
|
52602
|
+
self,
|
|
52603
|
+
request: vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolRequest,
|
|
52604
|
+
runtime: util_models.RuntimeOptions,
|
|
52605
|
+
) -> vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse:
|
|
52606
|
+
"""
|
|
52607
|
+
@summary 连续EIP组转换为公网IP地址池
|
|
52608
|
+
|
|
52609
|
+
@param request: TransformEipSegmentToPublicIpAddressPoolRequest
|
|
52610
|
+
@param runtime: runtime options for this request RuntimeOptions
|
|
52611
|
+
@return: TransformEipSegmentToPublicIpAddressPoolResponse
|
|
52612
|
+
"""
|
|
52613
|
+
UtilClient.validate_model(request)
|
|
52614
|
+
query = {}
|
|
52615
|
+
if not UtilClient.is_unset(request.client_token):
|
|
52616
|
+
query['ClientToken'] = request.client_token
|
|
52617
|
+
if not UtilClient.is_unset(request.description):
|
|
52618
|
+
query['Description'] = request.description
|
|
52619
|
+
if not UtilClient.is_unset(request.instance_id):
|
|
52620
|
+
query['InstanceId'] = request.instance_id
|
|
52621
|
+
if not UtilClient.is_unset(request.name):
|
|
52622
|
+
query['Name'] = request.name
|
|
52623
|
+
if not UtilClient.is_unset(request.region_id):
|
|
52624
|
+
query['RegionId'] = request.region_id
|
|
52625
|
+
if not UtilClient.is_unset(request.resource_group_id):
|
|
52626
|
+
query['ResourceGroupId'] = request.resource_group_id
|
|
52627
|
+
req = open_api_models.OpenApiRequest(
|
|
52628
|
+
query=OpenApiUtilClient.query(query)
|
|
52629
|
+
)
|
|
52630
|
+
params = open_api_models.Params(
|
|
52631
|
+
action='TransformEipSegmentToPublicIpAddressPool',
|
|
52632
|
+
version='2016-04-28',
|
|
52633
|
+
protocol='HTTPS',
|
|
52634
|
+
pathname='/',
|
|
52635
|
+
method='POST',
|
|
52636
|
+
auth_type='AK',
|
|
52637
|
+
style='RPC',
|
|
52638
|
+
req_body_type='formData',
|
|
52639
|
+
body_type='json'
|
|
52640
|
+
)
|
|
52641
|
+
return TeaCore.from_map(
|
|
52642
|
+
vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse(),
|
|
52643
|
+
await self.call_api_async(params, req, runtime)
|
|
52644
|
+
)
|
|
52645
|
+
|
|
52646
|
+
def transform_eip_segment_to_public_ip_address_pool(
|
|
52647
|
+
self,
|
|
52648
|
+
request: vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolRequest,
|
|
52649
|
+
) -> vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse:
|
|
52650
|
+
"""
|
|
52651
|
+
@summary 连续EIP组转换为公网IP地址池
|
|
52652
|
+
|
|
52653
|
+
@param request: TransformEipSegmentToPublicIpAddressPoolRequest
|
|
52654
|
+
@return: TransformEipSegmentToPublicIpAddressPoolResponse
|
|
52655
|
+
"""
|
|
52656
|
+
runtime = util_models.RuntimeOptions()
|
|
52657
|
+
return self.transform_eip_segment_to_public_ip_address_pool_with_options(request, runtime)
|
|
52658
|
+
|
|
52659
|
+
async def transform_eip_segment_to_public_ip_address_pool_async(
|
|
52660
|
+
self,
|
|
52661
|
+
request: vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolRequest,
|
|
52662
|
+
) -> vpc_20160428_models.TransformEipSegmentToPublicIpAddressPoolResponse:
|
|
52663
|
+
"""
|
|
52664
|
+
@summary 连续EIP组转换为公网IP地址池
|
|
52665
|
+
|
|
52666
|
+
@param request: TransformEipSegmentToPublicIpAddressPoolRequest
|
|
52667
|
+
@return: TransformEipSegmentToPublicIpAddressPoolResponse
|
|
52668
|
+
"""
|
|
52669
|
+
runtime = util_models.RuntimeOptions()
|
|
52670
|
+
return await self.transform_eip_segment_to_public_ip_address_pool_with_options_async(request, runtime)
|
|
52671
|
+
|
|
52556
52672
|
def un_tag_resources_with_options(
|
|
52557
52673
|
self,
|
|
52558
52674
|
request: vpc_20160428_models.UnTagResourcesRequest,
|
|
@@ -60130,6 +60130,11 @@ class DescribeVpcsRequest(TeaModel):
|
|
|
60130
60130
|
# * **true**: performs only a dry run. The system prechecks whether your AccessKey pair is valid, whether the RAM user is authorized, and whether the required parameters are specified. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.
|
|
60131
60131
|
# * **false** (default): sends the request. If the request passes the check, a 2xx HTTP status code is returned and VPCs are queried.
|
|
60132
60132
|
self.dry_run = dry_run
|
|
60133
|
+
# Query for VPCs in the specified region that have enabled IPv6 CIDR blocks. The value is empty by default, which means no filtering based on IPv6 availability is conducted. Valid values:
|
|
60134
|
+
#
|
|
60135
|
+
# - false: disabled
|
|
60136
|
+
#
|
|
60137
|
+
# - true: enabled
|
|
60133
60138
|
self.enable_ipv_6 = enable_ipv_6
|
|
60134
60139
|
# Specifies whether to query the default VPC in the specified region. Valid values:
|
|
60135
60140
|
#
|
|
@@ -60138,7 +60143,7 @@ class DescribeVpcsRequest(TeaModel):
|
|
|
60138
60143
|
self.is_default = is_default
|
|
60139
60144
|
self.owner_account = owner_account
|
|
60140
60145
|
self.owner_id = owner_id
|
|
60141
|
-
# The
|
|
60146
|
+
# The page number. Default value: **1**.
|
|
60142
60147
|
self.page_number = page_number
|
|
60143
60148
|
# The number of entries per page. Maximum value: **50**. Default value: **10**.
|
|
60144
60149
|
self.page_size = page_size
|
|
@@ -60578,7 +60583,15 @@ class DescribeVpcsResponseBodyVpcsVpc(TeaModel):
|
|
|
60578
60583
|
# * **Deleted**\
|
|
60579
60584
|
# * **Pending**\
|
|
60580
60585
|
self.dhcp_options_set_status = dhcp_options_set_status
|
|
60586
|
+
# Indicates whether the Domain Name System (DNS) feature is enabled.
|
|
60581
60587
|
self.dns_hostname_status = dns_hostname_status
|
|
60588
|
+
# Indicates whether the IPv6 is enabled.
|
|
60589
|
+
#
|
|
60590
|
+
# Valid values:
|
|
60591
|
+
#
|
|
60592
|
+
# - false: false
|
|
60593
|
+
#
|
|
60594
|
+
# - true: true
|
|
60582
60595
|
self.enabled_ipv_6 = enabled_ipv_6
|
|
60583
60596
|
# The IPv6 CIDR block of the VPC.
|
|
60584
60597
|
self.ipv_6cidr_block = ipv_6cidr_block
|
|
@@ -60805,7 +60818,7 @@ class DescribeVpcsResponseBody(TeaModel):
|
|
|
60805
60818
|
self.request_id = request_id
|
|
60806
60819
|
# The number of entries returned.
|
|
60807
60820
|
self.total_count = total_count
|
|
60808
|
-
# The details
|
|
60821
|
+
# The details of the VPC.
|
|
60809
60822
|
self.vpcs = vpcs
|
|
60810
60823
|
|
|
60811
60824
|
def validate(self):
|
|
@@ -100469,6 +100482,145 @@ class TerminateVirtualBorderRouterResponse(TeaModel):
|
|
|
100469
100482
|
return self
|
|
100470
100483
|
|
|
100471
100484
|
|
|
100485
|
+
class TransformEipSegmentToPublicIpAddressPoolRequest(TeaModel):
|
|
100486
|
+
def __init__(
|
|
100487
|
+
self,
|
|
100488
|
+
client_token: str = None,
|
|
100489
|
+
description: str = None,
|
|
100490
|
+
instance_id: str = None,
|
|
100491
|
+
name: str = None,
|
|
100492
|
+
region_id: str = None,
|
|
100493
|
+
resource_group_id: str = None,
|
|
100494
|
+
):
|
|
100495
|
+
self.client_token = client_token
|
|
100496
|
+
self.description = description
|
|
100497
|
+
# This parameter is required.
|
|
100498
|
+
self.instance_id = instance_id
|
|
100499
|
+
self.name = name
|
|
100500
|
+
# This parameter is required.
|
|
100501
|
+
self.region_id = region_id
|
|
100502
|
+
self.resource_group_id = resource_group_id
|
|
100503
|
+
|
|
100504
|
+
def validate(self):
|
|
100505
|
+
pass
|
|
100506
|
+
|
|
100507
|
+
def to_map(self):
|
|
100508
|
+
_map = super().to_map()
|
|
100509
|
+
if _map is not None:
|
|
100510
|
+
return _map
|
|
100511
|
+
|
|
100512
|
+
result = dict()
|
|
100513
|
+
if self.client_token is not None:
|
|
100514
|
+
result['ClientToken'] = self.client_token
|
|
100515
|
+
if self.description is not None:
|
|
100516
|
+
result['Description'] = self.description
|
|
100517
|
+
if self.instance_id is not None:
|
|
100518
|
+
result['InstanceId'] = self.instance_id
|
|
100519
|
+
if self.name is not None:
|
|
100520
|
+
result['Name'] = self.name
|
|
100521
|
+
if self.region_id is not None:
|
|
100522
|
+
result['RegionId'] = self.region_id
|
|
100523
|
+
if self.resource_group_id is not None:
|
|
100524
|
+
result['ResourceGroupId'] = self.resource_group_id
|
|
100525
|
+
return result
|
|
100526
|
+
|
|
100527
|
+
def from_map(self, m: dict = None):
|
|
100528
|
+
m = m or dict()
|
|
100529
|
+
if m.get('ClientToken') is not None:
|
|
100530
|
+
self.client_token = m.get('ClientToken')
|
|
100531
|
+
if m.get('Description') is not None:
|
|
100532
|
+
self.description = m.get('Description')
|
|
100533
|
+
if m.get('InstanceId') is not None:
|
|
100534
|
+
self.instance_id = m.get('InstanceId')
|
|
100535
|
+
if m.get('Name') is not None:
|
|
100536
|
+
self.name = m.get('Name')
|
|
100537
|
+
if m.get('RegionId') is not None:
|
|
100538
|
+
self.region_id = m.get('RegionId')
|
|
100539
|
+
if m.get('ResourceGroupId') is not None:
|
|
100540
|
+
self.resource_group_id = m.get('ResourceGroupId')
|
|
100541
|
+
return self
|
|
100542
|
+
|
|
100543
|
+
|
|
100544
|
+
class TransformEipSegmentToPublicIpAddressPoolResponseBody(TeaModel):
|
|
100545
|
+
def __init__(
|
|
100546
|
+
self,
|
|
100547
|
+
public_ip_address_pool_id: str = None,
|
|
100548
|
+
request_id: str = None,
|
|
100549
|
+
resource_group_id: str = None,
|
|
100550
|
+
):
|
|
100551
|
+
self.public_ip_address_pool_id = public_ip_address_pool_id
|
|
100552
|
+
self.request_id = request_id
|
|
100553
|
+
self.resource_group_id = resource_group_id
|
|
100554
|
+
|
|
100555
|
+
def validate(self):
|
|
100556
|
+
pass
|
|
100557
|
+
|
|
100558
|
+
def to_map(self):
|
|
100559
|
+
_map = super().to_map()
|
|
100560
|
+
if _map is not None:
|
|
100561
|
+
return _map
|
|
100562
|
+
|
|
100563
|
+
result = dict()
|
|
100564
|
+
if self.public_ip_address_pool_id is not None:
|
|
100565
|
+
result['PublicIpAddressPoolId'] = self.public_ip_address_pool_id
|
|
100566
|
+
if self.request_id is not None:
|
|
100567
|
+
result['RequestId'] = self.request_id
|
|
100568
|
+
if self.resource_group_id is not None:
|
|
100569
|
+
result['ResourceGroupId'] = self.resource_group_id
|
|
100570
|
+
return result
|
|
100571
|
+
|
|
100572
|
+
def from_map(self, m: dict = None):
|
|
100573
|
+
m = m or dict()
|
|
100574
|
+
if m.get('PublicIpAddressPoolId') is not None:
|
|
100575
|
+
self.public_ip_address_pool_id = m.get('PublicIpAddressPoolId')
|
|
100576
|
+
if m.get('RequestId') is not None:
|
|
100577
|
+
self.request_id = m.get('RequestId')
|
|
100578
|
+
if m.get('ResourceGroupId') is not None:
|
|
100579
|
+
self.resource_group_id = m.get('ResourceGroupId')
|
|
100580
|
+
return self
|
|
100581
|
+
|
|
100582
|
+
|
|
100583
|
+
class TransformEipSegmentToPublicIpAddressPoolResponse(TeaModel):
|
|
100584
|
+
def __init__(
|
|
100585
|
+
self,
|
|
100586
|
+
headers: Dict[str, str] = None,
|
|
100587
|
+
status_code: int = None,
|
|
100588
|
+
body: TransformEipSegmentToPublicIpAddressPoolResponseBody = None,
|
|
100589
|
+
):
|
|
100590
|
+
self.headers = headers
|
|
100591
|
+
self.status_code = status_code
|
|
100592
|
+
self.body = body
|
|
100593
|
+
|
|
100594
|
+
def validate(self):
|
|
100595
|
+
if self.body:
|
|
100596
|
+
self.body.validate()
|
|
100597
|
+
|
|
100598
|
+
def to_map(self):
|
|
100599
|
+
_map = super().to_map()
|
|
100600
|
+
if _map is not None:
|
|
100601
|
+
return _map
|
|
100602
|
+
|
|
100603
|
+
result = dict()
|
|
100604
|
+
if self.headers is not None:
|
|
100605
|
+
result['headers'] = self.headers
|
|
100606
|
+
if self.status_code is not None:
|
|
100607
|
+
result['statusCode'] = self.status_code
|
|
100608
|
+
if self.body is not None:
|
|
100609
|
+
result['body'] = self.body.to_map()
|
|
100610
|
+
return result
|
|
100611
|
+
|
|
100612
|
+
def from_map(self, m: dict = None):
|
|
100613
|
+
m = m or dict()
|
|
100614
|
+
if m.get('headers') is not None:
|
|
100615
|
+
self.headers = m.get('headers')
|
|
100616
|
+
if m.get('statusCode') is not None:
|
|
100617
|
+
self.status_code = m.get('statusCode')
|
|
100618
|
+
if m.get('body') is not None:
|
|
100619
|
+
temp_model = TransformEipSegmentToPublicIpAddressPoolResponseBody()
|
|
100620
|
+
self.body = temp_model.from_map(m['body'])
|
|
100621
|
+
return self
|
|
100622
|
+
|
|
100623
|
+
|
|
100472
100624
|
class UnTagResourcesRequest(TeaModel):
|
|
100473
100625
|
def __init__(
|
|
100474
100626
|
self,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '6.9.6'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|