@substrate/api-sidecar 11.1.2 → 11.3.2
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.
- package/README.md +21 -18
- package/build/package.json +22 -22
- package/build/src/chains-config/acalaControllers.d.ts +5 -0
- package/build/src/chains-config/acalaControllers.js +35 -0
- package/build/src/chains-config/acalaControllers.js.map +1 -0
- package/build/src/chains-config/index.js +6 -0
- package/build/src/chains-config/index.js.map +1 -1
- package/build/src/chains-config/karuraControllers.d.ts +5 -0
- package/build/src/chains-config/karuraControllers.js +35 -0
- package/build/src/chains-config/karuraControllers.js.map +1 -0
- package/build/src/chains-config/mantaControllers.d.ts +5 -0
- package/build/src/chains-config/mantaControllers.js +39 -0
- package/build/src/chains-config/mantaControllers.js.map +1 -0
- package/build/src/chains-config/metadata-consts/acalaConsts.d.ts +2 -0
- package/build/src/chains-config/metadata-consts/acalaConsts.js +11 -0
- package/build/src/chains-config/metadata-consts/acalaConsts.js.map +1 -0
- package/build/src/chains-config/metadata-consts/calamariConsts.js +1 -1
- package/build/src/chains-config/metadata-consts/calamariConsts.js.map +1 -1
- package/build/src/chains-config/metadata-consts/index.js +9 -0
- package/build/src/chains-config/metadata-consts/index.js.map +1 -1
- package/build/src/chains-config/metadata-consts/karuraConsts.d.ts +2 -0
- package/build/src/chains-config/metadata-consts/karuraConsts.js +14 -0
- package/build/src/chains-config/metadata-consts/karuraConsts.js.map +1 -0
- package/build/src/chains-config/metadata-consts/kusamaConsts.js +1 -1
- package/build/src/chains-config/metadata-consts/kusamaConsts.js.map +1 -1
- package/build/src/chains-config/metadata-consts/mantaConsts.d.ts +2 -0
- package/build/src/chains-config/metadata-consts/mantaConsts.js +11 -0
- package/build/src/chains-config/metadata-consts/mantaConsts.js.map +1 -0
- package/build/src/chains-config/metadata-consts/polkadotConsts.js +1 -1
- package/build/src/chains-config/metadata-consts/polkadotConsts.js.map +1 -1
- package/build/src/controllers/paras/ParasController.js +13 -7
- package/build/src/controllers/paras/ParasController.js.map +1 -1
- package/build/src/controllers/transaction/TransactionMaterialController.d.ts +8 -0
- package/build/src/controllers/transaction/TransactionMaterialController.js +38 -3
- package/build/src/controllers/transaction/TransactionMaterialController.js.map +1 -1
- package/build/src/services/accounts/AccountsAssetsService.spec.js +1 -1
- package/build/src/services/accounts/AccountsAssetsService.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingPayoutsService.d.ts +11 -5
- package/build/src/services/accounts/AccountsStakingPayoutsService.js +16 -15
- package/build/src/services/accounts/AccountsStakingPayoutsService.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingPayoutsService.spec.d.ts +1 -0
- package/build/src/services/accounts/AccountsStakingPayoutsService.spec.js +152 -0
- package/build/src/services/accounts/AccountsStakingPayoutsService.spec.js.map +1 -0
- package/build/src/services/pallets/PalletsAssetsService.spec.js +1 -1
- package/build/src/services/pallets/PalletsAssetsService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.js +22 -21
- package/build/src/services/pallets/PalletsStakingProgressService.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js +29 -26
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
- package/build/src/services/paras/ParasService.d.ts +12 -2
- package/build/src/services/paras/ParasService.js +76 -39
- package/build/src/services/paras/ParasService.js.map +1 -1
- package/build/src/services/paras/ParasService.spec.js +37 -35
- package/build/src/services/paras/ParasService.spec.js.map +1 -1
- package/build/src/services/test-helpers/mock/accounts/deriveNominators.d.ts +10 -0
- package/build/src/services/test-helpers/mock/accounts/deriveNominators.js +70 -0
- package/build/src/services/test-helpers/mock/accounts/deriveNominators.js.map +1 -0
- package/build/src/services/test-helpers/mock/accounts/deriveValidators.d.ts +18 -0
- package/build/src/services/test-helpers/mock/accounts/deriveValidators.js +28 -0
- package/build/src/services/test-helpers/mock/accounts/deriveValidators.js.map +1 -0
- package/build/src/services/test-helpers/mock/accounts/eraRewardPoints.d.ts +6 -0
- package/build/src/services/test-helpers/mock/accounts/eraRewardPoints.js +17 -0
- package/build/src/services/test-helpers/mock/accounts/eraRewardPoints.js.map +1 -0
- package/build/src/services/test-helpers/mock/accounts/index.d.ts +4 -0
- package/build/src/services/test-helpers/mock/accounts/index.js +17 -0
- package/build/src/services/test-helpers/mock/accounts/index.js.map +1 -0
- package/build/src/services/test-helpers/mock/accounts/ledger.d.ts +8 -0
- package/build/src/services/test-helpers/mock/accounts/ledger.js +19 -0
- package/build/src/services/test-helpers/mock/accounts/ledger.js.map +1 -0
- package/build/src/services/test-helpers/responses/accounts/stakingPayout.json +33 -0
- package/build/src/services/transaction/TransactionMaterialService.d.ts +2 -1
- package/build/src/services/transaction/TransactionMaterialService.js +4 -3
- package/build/src/services/transaction/TransactionMaterialService.js.map +1 -1
- package/build/src/services/transaction/TransactionMaterialService.spec.js +22 -2
- package/build/src/services/transaction/TransactionMaterialService.spec.js.map +1 -1
- package/build/src/test-helpers/metadata/polkadotV9122Metadata.d.ts +1 -0
- package/build/src/test-helpers/metadata/polkadotV9122Metadata.js +5 -0
- package/build/src/test-helpers/metadata/polkadotV9122Metadata.js.map +1 -0
- package/build/src/test-helpers/registries/polkadotRegistry.d.ts +4 -0
- package/build/src/test-helpers/registries/polkadotRegistry.js +6 -1
- package/build/src/test-helpers/registries/polkadotRegistry.js.map +1 -1
- package/build/src/test-helpers/typeFactory.d.ts +1 -1
- package/build/src/types/responses/AccountAssets.d.ts +4 -4
- package/build/src/types/responses/Assets.d.ts +3 -2
- package/build/src/types/responses/Paras.d.ts +9 -6
- package/build/src/types/responses/TransactionMaterial.d.ts +2 -1
- package/package.json +22 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polkadotV9122Metadata.js","sourceRoot":"","sources":["../../../../src/test-helpers/metadata/polkadotV9122Metadata.ts"],"names":[],"mappings":";;;AAAa,QAAA,wBAAwB,GACpC,wsjhBAAwsjhB,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.polkadotRegistryV9110 = exports.polkadotRegistryV29 = exports.polkadotRegistry = void 0;
|
|
3
|
+
exports.polkadotRegistryV9122 = exports.polkadotRegistryV9110 = exports.polkadotRegistryV29 = exports.polkadotRegistry = void 0;
|
|
4
4
|
const types_1 = require("@polkadot/types");
|
|
5
5
|
const types_2 = require("@polkadot/types");
|
|
6
6
|
const types_known_1 = require("@polkadot/types-known");
|
|
7
7
|
const polkadotV16Metadata_1 = require("../metadata/polkadotV16Metadata");
|
|
8
8
|
const polkadotV29Metadata_1 = require("../metadata/polkadotV29Metadata");
|
|
9
9
|
const polkadotV9110Metadata_1 = require("../metadata/polkadotV9110Metadata");
|
|
10
|
+
const polkadotV9122Metadata_1 = require("../metadata/polkadotV9122Metadata");
|
|
10
11
|
/**
|
|
11
12
|
* Create a type registry for Polkadot.
|
|
12
13
|
* Useful for creating types in order to facilitate testing.
|
|
@@ -34,4 +35,8 @@ exports.polkadotRegistryV29 = createPolkadotRegistry(29, polkadotV29Metadata_1.p
|
|
|
34
35
|
* Polkadot v9110 TypeRegistry
|
|
35
36
|
*/
|
|
36
37
|
exports.polkadotRegistryV9110 = createPolkadotRegistry(9110, polkadotV9110Metadata_1.polkadotMetadataRpcV9110);
|
|
38
|
+
/**
|
|
39
|
+
* Polkadot v9122 TypeRegistry
|
|
40
|
+
*/
|
|
41
|
+
exports.polkadotRegistryV9122 = createPolkadotRegistry(9122, polkadotV9122Metadata_1.polkadotMetadataRpcV9122);
|
|
37
42
|
//# sourceMappingURL=polkadotRegistry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polkadotRegistry.js","sourceRoot":"","sources":["../../../../src/test-helpers/registries/polkadotRegistry.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,2CAA+C;AAC/C,uDAAqD;AAErD,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAE7E;;;GAGG;AACH,SAAS,sBAAsB,CAC9B,WAAmB,EACnB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,oBAAY,EAAE,CAAC;IAEpC,QAAQ,CAAC,QAAQ,CAChB,IAAA,0BAAY,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAC3D,CAAC;IACF,QAAQ,CAAC,kBAAkB,CAC1B,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACtC,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,KAAK;KAClB,CAAC,CACF,CAAC;IAEF,QAAQ,CAAC,WAAW,CAAC,IAAI,gBAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,sBAAsB,CACrD,EAAE,EACF,4CAAsB,CACtB,CAAC;AAEF;;GAEG;AAEU,QAAA,mBAAmB,GAAG,sBAAsB,CACxD,EAAE,EACF,4CAAsB,CACtB,CAAC;AAEF;;GAEG;AACU,QAAA,qBAAqB,GAAG,sBAAsB,CAC1D,IAAI,EACJ,gDAAwB,CACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"polkadotRegistry.js","sourceRoot":"","sources":["../../../../src/test-helpers/registries/polkadotRegistry.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAC3C,2CAA+C;AAC/C,uDAAqD;AAErD,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAC7E,6EAA6E;AAE7E;;;GAGG;AACH,SAAS,sBAAsB,CAC9B,WAAmB,EACnB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,IAAI,oBAAY,EAAE,CAAC;IAEpC,QAAQ,CAAC,QAAQ,CAChB,IAAA,0BAAY,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAC3D,CAAC;IACF,QAAQ,CAAC,kBAAkB,CAC1B,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACtC,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,EAAE;QACjB,WAAW,EAAE,KAAK;KAClB,CAAC,CACF,CAAC;IAEF,QAAQ,CAAC,WAAW,CAAC,IAAI,gBAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEvD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,sBAAsB,CACrD,EAAE,EACF,4CAAsB,CACtB,CAAC;AAEF;;GAEG;AAEU,QAAA,mBAAmB,GAAG,sBAAsB,CACxD,EAAE,EACF,4CAAsB,CACtB,CAAC;AAEF;;GAEG;AACU,QAAA,qBAAqB,GAAG,sBAAsB,CAC1D,IAAI,EACJ,gDAAwB,CACxB,CAAC;AAEF;;GAEG;AACU,QAAA,qBAAqB,GAAG,sBAAsB,CAC1D,IAAI,EACJ,gDAAwB,CACxB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ApiPromise } from '@polkadot/api';
|
|
2
|
-
import { StorageEntryBase } from '@polkadot/api/types
|
|
2
|
+
import { StorageEntryBase } from '@polkadot/api/types';
|
|
3
3
|
import { Option, StorageKey, Tuple, Vec } from '@polkadot/types';
|
|
4
4
|
import { Codec, Constructor, InterfaceTypes } from '@polkadot/types/types';
|
|
5
5
|
import { Observable } from '@polkadot/x-rxjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TAssetDepositBalance } from '@polkadot/types/interfaces';
|
|
2
2
|
import { AssetId } from '@polkadot/types/interfaces/runtime';
|
|
3
|
-
import { bool } from '@polkadot/types/primitive';
|
|
3
|
+
import { bool, u128 } from '@polkadot/types/primitive';
|
|
4
4
|
import { IAt } from '.';
|
|
5
5
|
export interface IAssetBalance {
|
|
6
6
|
/**
|
|
@@ -10,7 +10,7 @@ export interface IAssetBalance {
|
|
|
10
10
|
/**
|
|
11
11
|
* The units in which substrate records balances.
|
|
12
12
|
*/
|
|
13
|
-
balance:
|
|
13
|
+
balance: u128;
|
|
14
14
|
/**
|
|
15
15
|
* Whether this asset class is frozen except for permissioned/admin instructions.
|
|
16
16
|
*/
|
|
@@ -38,6 +38,6 @@ export interface IAccountAssetsBalances {
|
|
|
38
38
|
*/
|
|
39
39
|
export interface IAccountAssetApproval {
|
|
40
40
|
at: IAt;
|
|
41
|
-
amount:
|
|
41
|
+
amount: u128 | null;
|
|
42
42
|
deposit: TAssetDepositBalance | null;
|
|
43
43
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Option } from '@polkadot/types/codec';
|
|
2
|
-
import {
|
|
2
|
+
import { AssetMetadata } from '@polkadot/types/interfaces';
|
|
3
|
+
import { PalletAssetsAssetDetails } from '@polkadot/types/lookup';
|
|
3
4
|
import { IAt } from '.';
|
|
4
5
|
export interface IAssetInfo {
|
|
5
6
|
at: IAt;
|
|
6
|
-
assetInfo: Option<
|
|
7
|
+
assetInfo: Option<PalletAssetsAssetDetails>;
|
|
7
8
|
assetMetaData: AssetMetadata;
|
|
8
9
|
}
|
|
@@ -37,9 +37,10 @@ export interface ICrowdloans {
|
|
|
37
37
|
}
|
|
38
38
|
export interface LeaseFormatted {
|
|
39
39
|
/**
|
|
40
|
-
* Lease period.
|
|
40
|
+
* Lease period. The `leasePeriodIndex` can be null when the current block now,
|
|
41
|
+
* substracted by the offset is less than zero.
|
|
41
42
|
*/
|
|
42
|
-
leasePeriodIndex: number;
|
|
43
|
+
leasePeriodIndex: number | null;
|
|
43
44
|
/**
|
|
44
45
|
* Amount held on deposit for the lease period.
|
|
45
46
|
*/
|
|
@@ -114,13 +115,15 @@ export interface IAuctionsCurrent {
|
|
|
114
115
|
export interface ILeasesCurrent {
|
|
115
116
|
at: IAt;
|
|
116
117
|
/**
|
|
117
|
-
* The current lease period.
|
|
118
|
+
* The current lease period. The `leasePeriodIndex` can be null when the current block now,
|
|
119
|
+
* substracted by the offset is less than zero.
|
|
118
120
|
*/
|
|
119
|
-
leasePeriodIndex: BN;
|
|
121
|
+
leasePeriodIndex: BN | null;
|
|
120
122
|
/**
|
|
121
|
-
* Last block of the current lease period.
|
|
123
|
+
* Last block of the current lease period. The `endOfLeasePeriod` may be null
|
|
124
|
+
* when the `leasePeriodIndex` is null.
|
|
122
125
|
*/
|
|
123
|
-
endOfLeasePeriod: BN;
|
|
126
|
+
endOfLeasePeriod: BN | null;
|
|
124
127
|
/**
|
|
125
128
|
* ParaIds of current lease holders.
|
|
126
129
|
*/
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BlockHash } from '@polkadot/types/interfaces';
|
|
2
2
|
import { u32 } from '@polkadot/types/primitive';
|
|
3
|
+
import { AnyJson } from '@polkadot/types/types';
|
|
3
4
|
import { IAt } from '.';
|
|
4
5
|
export interface ITransactionMaterial {
|
|
5
6
|
at: IAt;
|
|
@@ -8,5 +9,5 @@ export interface ITransactionMaterial {
|
|
|
8
9
|
specName: string;
|
|
9
10
|
specVersion: u32;
|
|
10
11
|
txVersion: u32;
|
|
11
|
-
metadata?: string
|
|
12
|
+
metadata?: string | Record<string, AnyJson>;
|
|
12
13
|
}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "11.
|
|
2
|
+
"version": "11.3.2",
|
|
3
3
|
"name": "@substrate/api-sidecar",
|
|
4
4
|
"description": "REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.",
|
|
5
5
|
"homepage": "https://github.com/paritytech/substrate-api-sidecar#readme",
|
|
@@ -40,11 +40,11 @@
|
|
|
40
40
|
"lint:e2e-tests": "cd e2e-tests && substrate-dev-run-lint",
|
|
41
41
|
"build:e2e-tests": "(cd e2e-tests && substrate-exec-tsc)",
|
|
42
42
|
"test:e2e-tests": "yarn build:e2e-tests && node ./e2e-tests/build/index.js --config=./e2e-tests/jest.config.js",
|
|
43
|
-
"test:init-e2e-tests": "yarn start:e2e-scripts",
|
|
44
|
-
"test:init-e2e-tests:polkadot": "yarn
|
|
45
|
-
"test:init-e2e-tests:kusama": "yarn
|
|
46
|
-
"test:init-e2e-tests:westend": "yarn
|
|
47
|
-
"test:init-e2e-tests:statemine": "yarn
|
|
43
|
+
"test:init-e2e-tests": "yarn start:e2e-scripts --log-level=http",
|
|
44
|
+
"test:init-e2e-tests:polkadot": "yarn test:init-e2e-tests --chain polkadot",
|
|
45
|
+
"test:init-e2e-tests:kusama": "yarn test:init-e2e-tests --chain kusama",
|
|
46
|
+
"test:init-e2e-tests:westend": "yarn test:init-e2e-tests --chain westend",
|
|
47
|
+
"test:init-e2e-tests:statemine": "yarn test:init-e2e-tests --chain statemine",
|
|
48
48
|
"start:e2e-scripts": "yarn build:scripts && node scripts/build/runChainTests.js",
|
|
49
49
|
"build:scripts": "substrate-exec-rimraf scripts/build/ && cd scripts && substrate-exec-tsc",
|
|
50
50
|
"lint:scripts": "cd scripts && substrate-dev-run-lint",
|
|
@@ -52,16 +52,16 @@
|
|
|
52
52
|
"test:test-release": "yarn start:test-release"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@polkadot/api": "^6.
|
|
56
|
-
"@polkadot/apps-config": "0.98.2-
|
|
57
|
-
"@polkadot/util-crypto": "^
|
|
55
|
+
"@polkadot/api": "^6.10.3",
|
|
56
|
+
"@polkadot/apps-config": "0.98.2-94",
|
|
57
|
+
"@polkadot/util-crypto": "^8.0.5",
|
|
58
58
|
"@polkadot/x-rxjs": "^6.11.1",
|
|
59
|
-
"@substrate/calc": "^0.2.
|
|
59
|
+
"@substrate/calc": "^0.2.6",
|
|
60
60
|
"argparse": "^2.0.1",
|
|
61
61
|
"confmgr": "1.0.7",
|
|
62
62
|
"express": "^4.17.1",
|
|
63
63
|
"express-winston": "^4.1.0",
|
|
64
|
-
"http-errors": "^1.8.
|
|
64
|
+
"http-errors": "^1.8.1",
|
|
65
65
|
"lru-cache": "^6.0.0",
|
|
66
66
|
"winston": "^3.3.3"
|
|
67
67
|
},
|
|
@@ -69,23 +69,23 @@
|
|
|
69
69
|
"@substrate/dev": "^0.5.6",
|
|
70
70
|
"@types/argparse": "2.0.10",
|
|
71
71
|
"@types/express": "4.17.13",
|
|
72
|
-
"@types/express-serve-static-core": "4.17.
|
|
72
|
+
"@types/express-serve-static-core": "4.17.25",
|
|
73
73
|
"@types/http-errors": "1.8.1",
|
|
74
74
|
"@types/lru-cache": "^5.1.1",
|
|
75
75
|
"@types/morgan": "1.9.3",
|
|
76
76
|
"@types/triple-beam": "^1.3.2",
|
|
77
|
-
"standard-version": "9.3.
|
|
77
|
+
"standard-version": "9.3.2",
|
|
78
78
|
"tsc-watch": "^4.4.0"
|
|
79
79
|
},
|
|
80
80
|
"resolutions": {
|
|
81
|
-
"@polkadot/api": "6.
|
|
82
|
-
"@polkadot/keyring": "
|
|
83
|
-
"@polkadot/networks": "
|
|
84
|
-
"@polkadot/types": "6.
|
|
85
|
-
"@polkadot/types-known": "6.
|
|
86
|
-
"@polkadot/util": "
|
|
87
|
-
"@polkadot/util-crypto": "
|
|
88
|
-
"@polkadot/wasm-crypto": "4.
|
|
81
|
+
"@polkadot/api": "6.10.3",
|
|
82
|
+
"@polkadot/keyring": "8.0.5",
|
|
83
|
+
"@polkadot/networks": "8.0.5",
|
|
84
|
+
"@polkadot/types": "6.10.3",
|
|
85
|
+
"@polkadot/types-known": "6.10.3",
|
|
86
|
+
"@polkadot/util": "8.0.5",
|
|
87
|
+
"@polkadot/util-crypto": "8.0.5",
|
|
88
|
+
"@polkadot/wasm-crypto": "4.4.1",
|
|
89
89
|
"node-forge": ">=0.10.0",
|
|
90
90
|
"node-fetch": ">=2.6.1",
|
|
91
91
|
"prismjs": ">=1.23.0"
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
"polkadot",
|
|
98
98
|
"kusama"
|
|
99
99
|
],
|
|
100
|
-
"packageManager": "yarn@3.
|
|
100
|
+
"packageManager": "yarn@3.1.0"
|
|
101
101
|
}
|