@bitgo/account-lib 2.20.0-rc.31 → 2.20.0-rc.32
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/CHANGELOG.md +11 -0
- package/dist/src/coin/hbar/coinTransferBuilder.js +2 -2
- package/dist/src/coin/hbar/iface.d.ts +21 -4
- package/dist/src/coin/hbar/iface.d.ts.map +1 -1
- package/dist/src/coin/hbar/iface.js +1 -1
- package/dist/src/coin/hbar/index.d.ts +3 -0
- package/dist/src/coin/hbar/index.d.ts.map +1 -1
- package/dist/src/coin/hbar/index.js +8 -2
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +4 -1
- package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -1
- package/dist/src/coin/hbar/tokenAssociateBuilder.js +18 -10
- package/dist/src/coin/hbar/tokenTransferBuilder.js +2 -2
- package/dist/src/coin/hbar/transaction.d.ts +10 -2
- package/dist/src/coin/hbar/transaction.d.ts.map +1 -1
- package/dist/src/coin/hbar/transaction.js +76 -29
- package/dist/src/coin/hbar/utils.d.ts +0 -1
- package/dist/src/coin/hbar/utils.d.ts.map +1 -1
- package/dist/src/coin/hbar/utils.js +1 -2
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/tsconfig.tsbuildinfo +840 -3247
- package/package.json +11 -15
- package/dist/src/coin/avaxc/index.d.ts +0 -7
- package/dist/src/coin/avaxc/index.d.ts.map +0 -1
- package/dist/src/coin/avaxc/index.js +0 -34
- package/dist/src/coin/avaxc/keyPair.d.ts +0 -26
- package/dist/src/coin/avaxc/keyPair.d.ts.map +0 -1
- package/dist/src/coin/avaxc/keyPair.js +0 -83
- package/dist/src/coin/avaxc/resources.d.ts +0 -12
- package/dist/src/coin/avaxc/resources.d.ts.map +0 -1
- package/dist/src/coin/avaxc/resources.js +0 -27
- package/dist/src/coin/avaxc/transactionBuilder.d.ts +0 -17
- package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/avaxc/transactionBuilder.js +0 -45
- package/dist/src/coin/avaxc/transferBuilder.d.ts +0 -17
- package/dist/src/coin/avaxc/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/avaxc/transferBuilder.js +0 -25
- package/dist/src/coin/avaxc/utils.d.ts +0 -38
- package/dist/src/coin/avaxc/utils.d.ts.map +0 -1
- package/dist/src/coin/avaxc/utils.js +0 -70
- package/dist/src/coin/avaxc/walletUtil.d.ts +0 -22
- package/dist/src/coin/avaxc/walletUtil.d.ts.map +0 -1
- package/dist/src/coin/avaxc/walletUtil.js +0 -62
- package/dist/src/coin/celo/index.d.ts +0 -7
- package/dist/src/coin/celo/index.d.ts.map +0 -1
- package/dist/src/coin/celo/index.js +0 -34
- package/dist/src/coin/celo/resources.d.ts +0 -10
- package/dist/src/coin/celo/resources.d.ts.map +0 -1
- package/dist/src/coin/celo/resources.js +0 -26
- package/dist/src/coin/celo/stakingBuilder.d.ts +0 -91
- package/dist/src/coin/celo/stakingBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/stakingBuilder.js +0 -276
- package/dist/src/coin/celo/stakingCall.d.ts +0 -7
- package/dist/src/coin/celo/stakingCall.d.ts.map +0 -1
- package/dist/src/coin/celo/stakingCall.js +0 -13
- package/dist/src/coin/celo/transaction.d.ts +0 -9
- package/dist/src/coin/celo/transaction.d.ts.map +0 -1
- package/dist/src/coin/celo/transaction.js +0 -37
- package/dist/src/coin/celo/transactionBuilder.d.ts +0 -85
- package/dist/src/coin/celo/transactionBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/transactionBuilder.js +0 -208
- package/dist/src/coin/celo/transferBuilder.d.ts +0 -19
- package/dist/src/coin/celo/transferBuilder.d.ts.map +0 -1
- package/dist/src/coin/celo/transferBuilder.js +0 -27
- package/dist/src/coin/celo/types.d.ts +0 -51
- package/dist/src/coin/celo/types.d.ts.map +0 -1
- package/dist/src/coin/celo/types.js +0 -222
- package/dist/src/coin/celo/utils.d.ts +0 -18
- package/dist/src/coin/celo/utils.d.ts.map +0 -1
- package/dist/src/coin/celo/utils.js +0 -99
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sendMultiSigTokenTypes = exports.sendMultiSigTypes = exports.walletSimpleAbi = exports.flushCoinsTypes = exports.flushTokensTypes = exports.walletSimpleConstructor = exports.walletSimpleByteCode = void 0;
|
|
4
|
-
exports.walletSimpleByteCode = '0x60606040526000600160006101000a81548160ff021916908315150217905550341561002a57600080fd5b60405161155b38038061155b833981016040528080518201919050506003815114151561005657600080fd5b806000908051906020019061006c929190610073565b5050610140565b8280548282559060005260206000209081019282156100ec579160200282015b828111156100eb5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610093565b5b5090506100f991906100fd565b5090565b61013d91905b8082111561013957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101610103565b5090565b90565b61140c8061014f6000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630dcd7a6c146101335780632079fb9a146101e95780632da034091461024c57806339125215146102a45780637df73e271461037e578063a0b7967b146103cf578063a68a76cc146103f8578063abe3219c1461044d578063fc0f392d1461047a575b6000341115610131577f6e89d517057028190560dd200cf6bf792842861353d1173761dfa362e1c133f03334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a15b005b341561013e57600080fd5b6101e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061048f565b005b34156101f457600080fd5b61020a6004808035906020019091905050610668565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025757600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506106a7565b005b34156102af57600080fd5b61037c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610773565b005b341561038957600080fd5b6103b5600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a72565b604051808215151515815260200191505060405180910390f35b34156103da57600080fd5b6103e2610b16565b6040518082815260200191505060405180910390f35b341561040357600080fd5b61040b610b70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561045857600080fd5b610460610b95565b604051808215151515815260200191505060405180910390f35b341561048557600080fd5b61048d610ba8565b005b60008061049b33610a72565b15156104a657600080fd5b878787878760405180807f415641582d455243323000000000000000000000000000000000000000000000815250600a018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200195505050505050604051809103902091506105898883858888610c3b565b508590508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89896000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561063857600080fd5b6102c65a03f1151561064957600080fd5b50505060405180519050151561065e57600080fd5b5050505050505050565b60008181548110151561067757fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b233610a72565b15156106bd57600080fd5b8290508073ffffffffffffffffffffffffffffffffffffffff16633ef13367836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561075a57600080fd5b6102c65a03f1151561076b57600080fd5b505050505050565b60008061077f33610a72565b151561078a57600080fd5b878787878760405180807f41564158000000000000000000000000000000000000000000000000000000008152506004018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610833578051825260208201915060208101905060208303925061080e565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001955050505050506040518091039020915061087f8883858888610c3b565b90508773ffffffffffffffffffffffffffffffffffffffff16878760405180828051906020019080838360005b838110156108c75780820151818401526020810190506108ac565b50505050905090810190601f1680156108f45780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f192505050151561091857600080fd5b7f59bed9ab5d78073465dd642a9e3e76dfdb7d53bcae9d09df7d0b8f5234d5a8063382848b8b8b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a29578082015181840152602081019050610a0e565b50505050905090810190601f168015610a565780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15050505050505050565b600080600090505b600080549050811015610b0b578273ffffffffffffffffffffffffffffffffffffffff16600082815481101515610aad57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610afe5760019150610b10565b8080600101915050610a7a565b600091505b50919050565b6000806000809150600090505b600a811015610b655781600282600a81101515610b3c57fe5b01541115610b5857600281600a81101515610b5357fe5b015491505b8080600101915050610b23565b600182019250505090565b6000610b7a610e90565b604051809103906000f0801515610b9057600080fd5b905090565b600160009054906101000a900460ff1681565b610bb133610a72565b1515610bbc57600080fd5b60018060006101000a81548160ff0219169083151502179055507f0909e8f76a4fd3e970f2eaef56c0ee6dfaf8b87c5b8d3f56ffce78e825a9115733604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600080610c488686610ce6565b9050600160009054906101000a900460ff168015610c6c5750610c6a87610a72565b155b15610c7657600080fd5b42841015610c8357600080fd5b610c8c83610db9565b610c9581610a72565b1515610ca057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cd957600080fd5b8091505095945050505050565b60008060008060418551141515610cfc57600080fd5b602085015192506040850151915060ff6041860151169050601b8160ff161015610d2757601b810190505b600186828585604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610da557600080fd5b505060206040510351935050505092915050565b600080610dc533610a72565b1515610dd057600080fd5b60009150600090505b600a811015610e385782600282600a81101515610df257fe5b01541415610dff57600080fd5b600282600a81101515610e0e57fe5b0154600282600a81101515610e1f57fe5b01541015610e2b578091505b8080600101915050610dd9565b600282600a81101515610e4757fe5b0154831015610e5557600080fd5b612710600283600a81101515610e6757fe5b015401831115610e7657600080fd5b82600283600a81101515610e8657fe5b0181905550505050565b60405161054080610ea18339019056006060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104e28061005e6000396000f300606060405260043610610056576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062821de3146101475780633ef133671461019c5780636b9f96ea146101d5575b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156100b757600080fd5b7f69b31548dea9b3b707b4dff357d326e3e9348b24e7a6080a218a6edeeec48f9b3334600036604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001828103825284848281815260200192508082843782019150509550505050505060405180910390a1005b341561015257600080fd5b61015a6101ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101a757600080fd5b6101d3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061020f565b005b34156101e057600080fd5b6101e861043c565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561026f57600080fd5b8392503091508273ffffffffffffffffffffffffffffffffffffffff166370a08231836000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561031857600080fd5b6102c65a03f1151561032957600080fd5b505050604051805190509050600081141561034357610436565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561040f57600080fd5b6102c65a03f1151561042057600080fd5b50505060405180519050151561043557600080fd5b5b50505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156104b457600080fd5b5600a165627a7a72305820ffd078edc0e7f8e4c581c4d531c9619ed1ede538db1a0e1558a2ad1ee8a271e60029a165627a7a72305820b3536b1d05b7a85b619fa414a9cf3b280fc48b3154a2e4f09aa335189c8ae7b80029';
|
|
5
|
-
exports.walletSimpleConstructor = ['address[]'];
|
|
6
|
-
exports.flushTokensTypes = ['address', 'address'];
|
|
7
|
-
exports.flushCoinsTypes = [];
|
|
8
|
-
/*
|
|
9
|
-
The steps used to obtain the ABI of the contract were:
|
|
10
|
-
|
|
11
|
-
1. Go to: https://remix.ethereum.org/
|
|
12
|
-
2. Copy the content of the contract AvaxWalletSimple.sol into the IDE
|
|
13
|
-
The content of the contracts: Forwarder.sol and ERC20Interface.sol also need to be present to replicate the imports structure of AvaxWalletSimple.sol
|
|
14
|
-
3. Compile the contract with the compiler version 0.4.26+commit.4563c3fc and then get the generated ABI
|
|
15
|
-
*/
|
|
16
|
-
exports.walletSimpleAbi = [
|
|
17
|
-
{
|
|
18
|
-
constant: true,
|
|
19
|
-
inputs: [
|
|
20
|
-
{
|
|
21
|
-
name: '_owner',
|
|
22
|
-
type: 'address',
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
name: 'balanceOf',
|
|
26
|
-
outputs: [
|
|
27
|
-
{
|
|
28
|
-
name: 'balance',
|
|
29
|
-
type: 'uint256',
|
|
30
|
-
},
|
|
31
|
-
],
|
|
32
|
-
payable: false,
|
|
33
|
-
stateMutability: 'view',
|
|
34
|
-
type: 'function',
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
constant: false,
|
|
38
|
-
inputs: [
|
|
39
|
-
{
|
|
40
|
-
name: '_to',
|
|
41
|
-
type: 'address',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: '_value',
|
|
45
|
-
type: 'uint256',
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
name: 'transfer',
|
|
49
|
-
outputs: [
|
|
50
|
-
{
|
|
51
|
-
name: 'success',
|
|
52
|
-
type: 'bool',
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
payable: false,
|
|
56
|
-
stateMutability: 'nonpayable',
|
|
57
|
-
type: 'function',
|
|
58
|
-
},
|
|
59
|
-
];
|
|
60
|
-
exports.sendMultiSigTypes = ['address', 'uint', 'bytes', 'uint', 'uint', 'bytes'];
|
|
61
|
-
exports.sendMultiSigTokenTypes = ['address', 'uint', 'address', 'uint', 'uint', 'bytes'];
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0VXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2F2YXhjL3dhbGxldFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxvQkFBb0IsR0FDL0IsMHJWQUEwclYsQ0FBQztBQUVoclYsUUFBQSx1QkFBdUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3hDLFFBQUEsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDMUMsUUFBQSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQ2xDOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLGVBQWUsR0FBRztJQUM3QjtRQUNFLFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFO1lBQ047Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFNBQVM7YUFDaEI7U0FDRjtRQUNELElBQUksRUFBRSxXQUFXO1FBQ2pCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLElBQUksRUFBRSxVQUFVO0tBQ2pCO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsS0FBSztRQUNmLE1BQU0sRUFBRTtZQUNOO2dCQUNFLElBQUksRUFBRSxLQUFLO2dCQUNYLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsSUFBSSxFQUFFLFNBQVM7YUFDaEI7U0FDRjtRQUNELElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLElBQUksRUFBRSxNQUFNO2FBQ2I7U0FDRjtRQUNELE9BQU8sRUFBRSxLQUFLO1FBQ2QsZUFBZSxFQUFFLFlBQVk7UUFDN0IsSUFBSSxFQUFFLFVBQVU7S0FDakI7Q0FDRixDQUFDO0FBRVcsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFMUUsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgd2FsbGV0U2ltcGxlQnl0ZUNvZGUgPVxuICAnMHg2MDYwNjA0MDUyNjAwMDYwMDE2MDAwNjEwMTAwMGE4MTU0ODE2MGZmMDIxOTE2OTA4MzE1MTUwMjE3OTA1NTUwMzQxNTYxMDAyYTU3NjAwMDgwZmQ1YjYwNDA1MTYxMTU1YjM4MDM4MDYxMTU1YjgzMzk4MTAxNjA0MDUyODA4MDUxODIwMTkxOTA1MDUwNjAwMzgxNTExNDE1MTU2MTAwNTY1NzYwMDA4MGZkNWI4MDYwMDA5MDgwNTE5MDYwMjAwMTkwNjEwMDZjOTI5MTkwNjEwMDczNTY1YjUwNTA2MTAxNDA1NjViODI4MDU0ODI4MjU1OTA2MDAwNTI2MDIwNjAwMDIwOTA4MTAxOTI4MjE1NjEwMGVjNTc5MTYwMjAwMjgyMDE1YjgyODExMTE1NjEwMGViNTc4MjUxODI2MDAwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwOTE2MDIwMDE5MTkwNjAwMTAxOTA2MTAwOTM1NjViNWI1MDkwNTA2MTAwZjk5MTkwNjEwMGZkNTY1YjUwOTA1NjViNjEwMTNkOTE5MDViODA4MjExMTU2MTAxMzk1NzYwMDA4MTgxNjEwMTAwMGE4MTU0OTA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDU1NTA2MDAxMDE2MTAxMDM1NjViNTA5MDU2NWI5MDU2NWI2MTE0MGM4MDYxMDE0ZjYwMDAzOTYwMDBmMzAwNjA2MDYwNDA1MjYwMDQzNjEwNjEwMDk5NTc2MDAwMzU3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MDA0NjNmZmZmZmZmZjE2ODA2MzBkY2Q3YTZjMTQ2MTAxMzM1NzgwNjMyMDc5ZmI5YTE0NjEwMWU5NTc4MDYzMmRhMDM0MDkxNDYxMDI0YzU3ODA2MzM5MTI1MjE1MTQ2MTAyYTQ1NzgwNjM3ZGY3M2UyNzE0NjEwMzdlNTc4MDYzYTBiNzk2N2IxNDYxMDNjZjU3ODA2M2E2OGE3NmNjMTQ2MTAzZjg1NzgwNjNhYmUzMjE5YzE0NjEwNDRkNTc4MDYzZmMwZjM5MmQxNDYxMDQ3YTU3NWI2MDAwMzQxMTE1NjEwMTMxNTc3ZjZlODlkNTE3MDU3MDI4MTkwNTYwZGQyMDBjZjZiZjc5Mjg0Mjg2MTM1M2QxMTczNzYxZGZhMzYyZTFjMTMzZjAzMzM0NjAwMDM2NjA0MDUxODA4NTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODQ4MTUyNjAyMDAxODA2MDIwMDE4MjgxMDM4MjUyODQ4NDgyODE4MTUyNjAyMDAxOTI1MDgwODI4NDM3ODIwMTkxNTA1MDk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTBhMTViMDA1YjM0MTU2MTAxM2U1NzYwMDA4MGZkNWI2MTAxZTc2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNDhmNTY1YjAwNWIzNDE1NjEwMWY0NTc2MDAwODBmZDViNjEwMjBhNjAwNDgwODAzNTkwNjAyMDAxOTA5MTkwNTA1MDYxMDY2ODU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMjU3NTc2MDAwODBmZDViNjEwMmEyNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDUwNTA2MTA2YTc1NjViMDA1YjM0MTU2MTAyYWY1NzYwMDA4MGZkNWI2MTAzN2M2MDA0ODA4MDM1NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwOTE5MDgwMzU5MDYwMjAwMTkwODIwMTgwMzU5MDYwMjAwMTkwODA4MDYwMWYwMTYwMjA4MDkxMDQwMjYwMjAwMTYwNDA1MTkwODEwMTYwNDA1MjgwOTM5MjkxOTA4MTgxNTI2MDIwMDE4MzgzODA4Mjg0Mzc4MjAxOTE1MDUwNTA1MDUwNTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA5MTkwODAzNTkwNjAyMDAxOTA4MjAxODAzNTkwNjAyMDAxOTA4MDgwNjAxZjAxNjAyMDgwOTEwNDAyNjAyMDAxNjA0MDUxOTA4MTAxNjA0MDUyODA5MzkyOTE5MDgxODE1MjYwMjAwMTgzODM4MDgyODQzNzgyMDE5MTUwNTA1MDUwNTA1MDkxOTA1MDUwNjEwNzczNTY1YjAwNWIzNDE1NjEwMzg5NTc2MDAwODBmZDViNjEwM2I1NjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwYTcyNTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwM2RhNTc2MDAwODBmZDViNjEwM2UyNjEwYjE2NTY1YjYwNDA1MTgwODI4MTUyNjAyMDAxOTE1MDUwNjA0MDUxODA5MTAzOTBmMzViMzQxNTYxMDQwMzU3NjAwMDgwZmQ1YjYxMDQwYjYxMGI3MDU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDU4NTc2MDAwODBmZDViNjEwNDYwNjEwYjk1NTY1YjYwNDA1MTgwODIxNTE1MTUxNTgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwNDg1NTc2MDAwODBmZDViNjEwNDhkNjEwYmE4NTY1YjAwNWI2MDAwODA2MTA0OWIzMzYxMGE3MjU2NWIxNTE1NjEwNGE2NTc2MDAwODBmZDViODc4Nzg3ODc4NzYwNDA1MTgwODA3ZjQxNTY0MTU4MmQ0NTUyNDMzMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MTUyNTA2MDBhMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4MTUyNjAxNDAxODU4MTUyNjAyMDAxODQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTgzODE1MjYwMjAwMTgyODE1MjYwMjAwMTk1NTA1MDUwNTA1MDUwNjA0MDUxODA5MTAzOTAyMDkxNTA2MTA1ODk4ODgzODU4ODg4NjEwYzNiNTY1YjUwODU5MDUwODA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjYzYTkwNTljYmI4OTg5NjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODM2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5MjUwNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwNjM4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDY0OTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwMTUxNTYxMDY1ZTU3NjAwMDgwZmQ1YjUwNTA1MDUwNTA1MDUwNTA1NjViNjAwMDgxODE1NDgxMTAxNTE1NjEwNjc3NTdmZTViOTA2MDAwNTI2MDIwNjAwMDIwOTAwMTYwMDA5MTUwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1NjViNjAwMDYxMDZiMjMzNjEwYTcyNTY1YjE1MTU2MTA2YmQ1NzYwMDA4MGZkNWI4MjkwNTA4MDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjMzZWYxMzM2NzgzNjA0MDUxODI2M2ZmZmZmZmZmMTY3YzAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgxNTI2MDA0MDE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDAwNjA0MDUxODA4MzAzODE2MDAwODc4MDNiMTUxNTYxMDc1YTU3NjAwMDgwZmQ1YjYxMDJjNjVhMDNmMTE1MTU2MTA3NmI1NzYwMDA4MGZkNWI1MDUwNTA1MDUwNTA1NjViNjAwMDgwNjEwNzdmMzM2MTBhNzI1NjViMTUxNTYxMDc4YTU3NjAwMDgwZmQ1Yjg3ODc4Nzg3ODc2MDQwNTE4MDgwN2Y0MTU2NDE1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODE1MjUwNjAwNDAxODY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NmMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMTQwMTg1ODE1MjYwMjAwMTg0ODA1MTkwNjAyMDAxOTA4MDgzODM1YjYwMjA4MzEwMTUxNTYxMDgzMzU3ODA1MTgyNTI2MDIwODIwMTkxNTA2MDIwODEwMTkwNTA2MDIwODMwMzkyNTA2MTA4MGU1NjViNjAwMTgzNjAyMDAzNjEwMTAwMGEwMzgwMTk4MjUxMTY4MTg0NTExNjgwODIxNzg1NTI1MDUwNTA1MDUwNTA5MDUwMDE4MzgxNTI2MDIwMDE4MjgxNTI2MDIwMDE5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwMjA5MTUwNjEwODdmODg4Mzg1ODg4ODYxMGMzYjU2NWI5MDUwODc3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjg3ODc2MDQwNTE4MDgyODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMDhjNzU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMDhhYzU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTA4ZjQ1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDkxNTA1MDYwMDA2MDQwNTE4MDgzMDM4MTg1ODc2MTg3OTY1YTAzZjE5MjUwNTA1MDE1MTU2MTA5MTg1NzYwMDA4MGZkNWI3ZjU5YmVkOWFiNWQ3ODA3MzQ2NWRkNjQyYTllM2U3NmRmZGI3ZDUzYmNhZTlkMDlkZjdkMGI4ZjUyMzRkNWE4MDYzMzgyODQ4YjhiOGI2MDQwNTE4MDg3NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4NjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTUyNjAyMDAxODU2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTg0NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE4MzgxNTI2MDIwMDE4MDYwMjAwMTgyODEwMzgyNTI4MzgxODE1MTgxNTI2MDIwMDE5MTUwODA1MTkwNjAyMDAxOTA4MDgzODM2MDAwNWI4MzgxMTAxNTYxMGEyOTU3ODA4MjAxNTE4MTg0MDE1MjYwMjA4MTAxOTA1MDYxMGEwZTU2NWI1MDUwNTA1MDkwNTA5MDgxMDE5MDYwMWYxNjgwMTU2MTBhNTY1NzgwODIwMzgwNTE2MDAxODM2MDIwMDM2MTAxMDAwYTAzMTkxNjgxNTI2MDIwMDE5MTUwNWI1MDk3NTA1MDUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTE1MDUwNTA1MDUwNTA1MDUwNTY1YjYwMDA4MDYwMDA5MDUwNWI2MDAwODA1NDkwNTA4MTEwMTU2MTBiMGI1NzgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MDAwODI4MTU0ODExMDE1MTU2MTBhYWQ1N2ZlNWI5MDYwMDA1MjYwMjA2MDAwMjA5MDAxNjAwMDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYxNDE1NjEwYWZlNTc2MDAxOTE1MDYxMGIxMDU2NWI4MDgwNjAwMTAxOTE1MDUwNjEwYTdhNTY1YjYwMDA5MTUwNWI1MDkxOTA1MDU2NWI2MDAwODA2MDAwODA5MTUwNjAwMDkwNTA1YjYwMGE4MTEwMTU2MTBiNjU1NzgxNjAwMjgyNjAwYTgxMTAxNTE1NjEwYjNjNTdmZTViMDE1NDExMTU2MTBiNTg1NzYwMDI4MTYwMGE4MTEwMTUxNTYxMGI1MzU3ZmU1YjAxNTQ5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwYjIzNTY1YjYwMDE4MjAxOTI1MDUwNTA5MDU2NWI2MDAwNjEwYjdhNjEwZTkwNTY1YjYwNDA1MTgwOTEwMzkwNjAwMGYwODAxNTE1NjEwYjkwNTc2MDAwODBmZDViOTA1MDkwNTY1YjYwMDE2MDAwOTA1NDkwNjEwMTAwMGE5MDA0NjBmZjE2ODE1NjViNjEwYmIxMzM2MTBhNzI1NjViMTUxNTYxMGJiYzU3NjAwMDgwZmQ1YjYwMDE4MDYwMDA2MTAxMDAwYTgxNTQ4MTYwZmYwMjE5MTY5MDgzMTUxNTAyMTc5MDU1NTA3ZjA5MDllOGY3NmE0ZmQzZTk3MGYyZWFlZjU2YzBlZTZkZmFmOGI4N2M1YjhkM2Y1NmZmY2U3OGU4MjVhOTExNTczMzYwNDA1MTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwNDA1MTgwOTEwMzkwYTE1NjViNjAwMDgwNjEwYzQ4ODY4NjYxMGNlNjU2NWI5MDUwNjAwMTYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ2MGZmMTY4MDE1NjEwYzZjNTc1MDYxMGM2YTg3NjEwYTcyNTY1YjE1NWIxNTYxMGM3NjU3NjAwMDgwZmQ1YjQyODQxMDE1NjEwYzgzNTc2MDAwODBmZDViNjEwYzhjODM2MTBkYjk1NjViNjEwYzk1ODE2MTBhNzI1NjViMTUxNTYxMGNhMDU3NjAwMDgwZmQ1YjMzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY4MTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MTQxNTYxMGNkOTU3NjAwMDgwZmQ1YjgwOTE1MDUwOTU5NDUwNTA1MDUwNTA1NjViNjAwMDgwNjAwMDgwNjA0MTg1NTExNDE1MTU2MTBjZmM1NzYwMDA4MGZkNWI2MDIwODUwMTUxOTI1MDYwNDA4NTAxNTE5MTUwNjBmZjYwNDE4NjAxNTExNjkwNTA2MDFiODE2MGZmMTYxMDE1NjEwZDI3NTc2MDFiODEwMTkwNTA1YjYwMDE4NjgyODU4NTYwNDA1MTYwMDA4MTUyNjAyMDAxNjA0MDUyNjAwMDYwNDA1MTYwMjAwMTUyNjA0MDUxODA4NTYwMDAxOTE2NjAwMDE5MTY4MTUyNjAyMDAxODQ2MGZmMTY2MGZmMTY4MTUyNjAyMDAxODM2MDAwMTkxNjYwMDAxOTE2ODE1MjYwMjAwMTgyNjAwMDE5MTY2MDAwMTkxNjgxNTI2MDIwMDE5NDUwNTA1MDUwNTA2MDIwNjA0MDUxNjAyMDgxMDM5MDgwODQwMzkwNjAwMDg2NjE2NDZlNWEwM2YxMTUxNTYxMGRhNTU3NjAwMDgwZmQ1YjUwNTA2MDIwNjA0MDUxMDM1MTkzNTA1MDUwNTA5MjkxNTA1MDU2NWI2MDAwODA2MTBkYzUzMzYxMGE3MjU2NWIxNTE1NjEwZGQwNTc2MDAwODBmZDViNjAwMDkxNTA2MDAwOTA1MDViNjAwYTgxMTAxNTYxMGUzODU3ODI2MDAyODI2MDBhODExMDE1MTU2MTBkZjI1N2ZlNWIwMTU0MTQxNTYxMGRmZjU3NjAwMDgwZmQ1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGUwZTU3ZmU1YjAxNTQ2MDAyODI2MDBhODExMDE1MTU2MTBlMWY1N2ZlNWIwMTU0MTAxNTYxMGUyYjU3ODA5MTUwNWI4MDgwNjAwMTAxOTE1MDUwNjEwZGQ5NTY1YjYwMDI4MjYwMGE4MTEwMTUxNTYxMGU0NzU3ZmU1YjAxNTQ4MzEwMTU2MTBlNTU1NzYwMDA4MGZkNWI2MTI3MTA2MDAyODM2MDBhODExMDE1MTU2MTBlNjc1N2ZlNWIwMTU0MDE4MzExMTU2MTBlNzY1NzYwMDA4MGZkNWI4MjYwMDI4MzYwMGE4MTEwMTUxNTYxMGU4NjU3ZmU1YjAxODE5MDU1NTA1MDUwNTA1NjViNjA0MDUxNjEwNTQwODA2MTBlYTE4MzM5MDE5MDU2MDA2MDYwNjA0MDUyMzQxNTYxMDAwZjU3NjAwMDgwZmQ1YjMzNjAwMDgwNjEwMTAwMGE4MTU0ODE3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwMjE5MTY5MDgzNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTYwMjE3OTA1NTUwNjEwNGUyODA2MTAwNWU2MDAwMzk2MDAwZjMwMDYwNjA2MDQwNTI2MDA0MzYxMDYxMDA1NjU3NjAwMDM1N2MwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAwNDYzZmZmZmZmZmYxNjgwNjI4MjFkZTMxNDYxMDE0NzU3ODA2MzNlZjEzMzY3MTQ2MTAxOWM1NzgwNjM2YjlmOTZlYTE0NjEwMWQ1NTc1YjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MTA4ZmMzNDkwODExNTAyOTA2MDQwNTE2MDAwNjA0MDUxODA4MzAzODE4NTg4ODhmMTkzNTA1MDUwNTAxNTE1NjEwMGI3NTc2MDAwODBmZDViN2Y2OWIzMTU0OGRlYTliM2I3MDdiNGRmZjM1N2QzMjZlM2U5MzQ4YjI0ZTdhNjA4MGEyMThhNmVkZWVlYzQ4ZjliMzMzNDYwMDAzNjYwNDA1MTgwODU3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTg0ODE1MjYwMjAwMTgwNjAyMDAxODI4MTAzODI1Mjg0ODQ4MjgxODE1MjYwMjAwMTkyNTA4MDgyODQzNzgyMDE5MTUwNTA5NTUwNTA1MDUwNTA1MDYwNDA1MTgwOTEwMzkwYTEwMDViMzQxNTYxMDE1MjU3NjAwMDgwZmQ1YjYxMDE1YTYxMDFlYTU2NWI2MDQwNTE4MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTI2MDIwMDE5MTUwNTA2MDQwNTE4MDkxMDM5MGYzNWIzNDE1NjEwMWE3NTc2MDAwODBmZDViNjEwMWQzNjAwNDgwODAzNTczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2OTA2MDIwMDE5MDkxOTA1MDUwNjEwMjBmNTY1YjAwNWIzNDE1NjEwMWUwNTc2MDAwODBmZDViNjEwMWU4NjEwNDNjNTY1YjAwNWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjgxNTY1YjYwMDA4MDYwMDA4MDYwMDA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2MzM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjE0MTUxNTYxMDI2ZjU3NjAwMDgwZmQ1YjgzOTI1MDMwOTE1MDgyNzNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMTY2MzcwYTA4MjMxODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MjYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODI3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTkxNTA1MDYwMjA2MDQwNTE4MDgzMDM4MTYwMDA4NzgwM2IxNTE1NjEwMzE4NTc2MDAwODBmZDViNjEwMmM2NWEwM2YxMTUxNTYxMDMyOTU3NjAwMDgwZmQ1YjUwNTA1MDYwNDA1MTgwNTE5MDUwOTA1MDYwMDA4MTE0MTU2MTAzNDM1NzYxMDQzNjU2NWI4MjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjNhOTA1OWNiYjYwMDA4MDkwNTQ5MDYxMDEwMDBhOTAwNDczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODM2MDAwNjA0MDUxNjAyMDAxNTI2MDQwNTE4MzYzZmZmZmZmZmYxNjdjMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODE1MjYwMDQwMTgwODM3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2ODE1MjYwMjAwMTgyODE1MjYwMjAwMTkyNTA1MDUwNjAyMDYwNDA1MTgwODMwMzgxNjAwMDg3ODAzYjE1MTU2MTA0MGY1NzYwMDA4MGZkNWI2MTAyYzY1YTAzZjExNTE1NjEwNDIwNTc2MDAwODBmZDViNTA1MDUwNjA0MDUxODA1MTkwNTAxNTE1NjEwNDM1NTc2MDAwODBmZDViNWI1MDUwNTA1MDU2NWI2MDAwODA5MDU0OTA2MTAxMDAwYTkwMDQ3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjczZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjE2NjEwOGZjMzA3M2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYxNjMxOTA4MTE1MDI5MDYwNDA1MTYwMDA2MDQwNTE4MDgzMDM4MTg1ODg4OGYxOTM1MDUwNTA1MDE1MTU2MTA0YjQ1NzYwMDA4MGZkNWI1NjAwYTE2NTYyN2E3YTcyMzA1ODIwZmZkMDc4ZWRjMGU3ZjhlNGM1ODFjNGQ1MzFjOTYxOWVkMWVkZTUzOGRiMWEwZTE1NThhMmFkMWVlOGEyNzFlNjAwMjlhMTY1NjI3YTdhNzIzMDU4MjBiMzUzNmIxZDA1YjdhODViNjE5ZmE0MTRhOWNmM2IyODBmYzQ4YjMxNTRhMmU0ZjA5YWEzMzUxODljOGFlN2I4MDAyOSc7XG5cbmV4cG9ydCBjb25zdCB3YWxsZXRTaW1wbGVDb25zdHJ1Y3RvciA9IFsnYWRkcmVzc1tdJ107XG5leHBvcnQgY29uc3QgZmx1c2hUb2tlbnNUeXBlcyA9IFsnYWRkcmVzcycsICdhZGRyZXNzJ107XG5leHBvcnQgY29uc3QgZmx1c2hDb2luc1R5cGVzID0gW107XG4vKlxuVGhlIHN0ZXBzIHVzZWQgdG8gb2J0YWluIHRoZSBBQkkgb2YgdGhlIGNvbnRyYWN0IHdlcmU6XG5cbjEuIEdvIHRvOiBodHRwczovL3JlbWl4LmV0aGVyZXVtLm9yZy9cbjIuIENvcHkgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbnRyYWN0IEF2YXhXYWxsZXRTaW1wbGUuc29sIGludG8gdGhlIElERVxuICAgIFRoZSBjb250ZW50IG9mIHRoZSBjb250cmFjdHM6IEZvcndhcmRlci5zb2wgYW5kIEVSQzIwSW50ZXJmYWNlLnNvbCBhbHNvIG5lZWQgdG8gYmUgcHJlc2VudCB0byByZXBsaWNhdGUgdGhlIGltcG9ydHMgc3RydWN0dXJlIG9mIEF2YXhXYWxsZXRTaW1wbGUuc29sXG4zLiBDb21waWxlIHRoZSBjb250cmFjdCB3aXRoIHRoZSBjb21waWxlciB2ZXJzaW9uIDAuNC4yNitjb21taXQuNDU2M2MzZmMgYW5kIHRoZW4gZ2V0IHRoZSBnZW5lcmF0ZWQgQUJJXG4gKi9cbmV4cG9ydCBjb25zdCB3YWxsZXRTaW1wbGVBYmkgPSBbXG4gIHtcbiAgICBjb25zdGFudDogdHJ1ZSxcbiAgICBpbnB1dHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ19vd25lcicsXG4gICAgICAgIHR5cGU6ICdhZGRyZXNzJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBuYW1lOiAnYmFsYW5jZU9mJyxcbiAgICBvdXRwdXRzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdiYWxhbmNlJyxcbiAgICAgICAgdHlwZTogJ3VpbnQyNTYnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIHBheWFibGU6IGZhbHNlLFxuICAgIHN0YXRlTXV0YWJpbGl0eTogJ3ZpZXcnLFxuICAgIHR5cGU6ICdmdW5jdGlvbicsXG4gIH0sXG4gIHtcbiAgICBjb25zdGFudDogZmFsc2UsXG4gICAgaW5wdXRzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdfdG8nLFxuICAgICAgICB0eXBlOiAnYWRkcmVzcycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnX3ZhbHVlJyxcbiAgICAgICAgdHlwZTogJ3VpbnQyNTYnLFxuICAgICAgfSxcbiAgICBdLFxuICAgIG5hbWU6ICd0cmFuc2ZlcicsXG4gICAgb3V0cHV0czogW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnc3VjY2VzcycsXG4gICAgICAgIHR5cGU6ICdib29sJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBwYXlhYmxlOiBmYWxzZSxcbiAgICBzdGF0ZU11dGFiaWxpdHk6ICdub25wYXlhYmxlJyxcbiAgICB0eXBlOiAnZnVuY3Rpb24nLFxuICB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IHNlbmRNdWx0aVNpZ1R5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQnLCAnYnl0ZXMnLCAndWludCcsICd1aW50JywgJ2J5dGVzJ107XG5cbmV4cG9ydCBjb25zdCBzZW5kTXVsdGlTaWdUb2tlblR5cGVzID0gWydhZGRyZXNzJywgJ3VpbnQnLCAnYWRkcmVzcycsICd1aW50JywgJ3VpbnQnLCAnYnl0ZXMnXTtcbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { KeyPair, Interface } from '@bitgo/sdk-coin-eth';
|
|
2
|
-
export { Transaction } from './transaction';
|
|
3
|
-
export { TransactionBuilder } from './transactionBuilder';
|
|
4
|
-
export { TransferBuilder } from './transferBuilder';
|
|
5
|
-
import * as Utils from './utils';
|
|
6
|
-
export { Utils };
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/coin/celo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.Utils = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.Interface = exports.KeyPair = void 0;
|
|
23
|
-
var sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
24
|
-
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return sdk_coin_eth_1.KeyPair; } });
|
|
25
|
-
Object.defineProperty(exports, "Interface", { enumerable: true, get: function () { return sdk_coin_eth_1.Interface; } });
|
|
26
|
-
var transaction_1 = require("./transaction");
|
|
27
|
-
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
28
|
-
var transactionBuilder_1 = require("./transactionBuilder");
|
|
29
|
-
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
30
|
-
var transferBuilder_1 = require("./transferBuilder");
|
|
31
|
-
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
32
|
-
const Utils = __importStar(require("./utils"));
|
|
33
|
-
exports.Utils = Utils;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9jZWxvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBeUQ7QUFBaEQsdUdBQUEsT0FBTyxPQUFBO0FBQUUseUdBQUEsU0FBUyxPQUFBO0FBQzNCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUE7QUFFeEIsK0NBQWlDO0FBRXhCLHNCQUFLIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgS2V5UGFpciwgSW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IHsgVXRpbHMgfTtcbiJdfQ==
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import EthereumCommon from '@ethereumjs/common';
|
|
2
|
-
/**
|
|
3
|
-
* A Common object defining the chain and the hardfork for CELO Testnet
|
|
4
|
-
*/
|
|
5
|
-
export declare const testnetCommon: EthereumCommon;
|
|
6
|
-
/**
|
|
7
|
-
* A Common object defining the chain and the hardfork for CELO Mainnet
|
|
8
|
-
*/
|
|
9
|
-
export declare const mainnetCommon: EthereumCommon;
|
|
10
|
-
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/coin/celo/resources.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,aAAa,gBAQzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,gBAQzB,CAAC"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.mainnetCommon = exports.testnetCommon = void 0;
|
|
7
|
-
const statics_1 = require("@bitgo/statics");
|
|
8
|
-
const common_1 = __importDefault(require("@ethereumjs/common"));
|
|
9
|
-
/**
|
|
10
|
-
* A Common object defining the chain and the hardfork for CELO Testnet
|
|
11
|
-
*/
|
|
12
|
-
exports.testnetCommon = common_1.default.forCustomChain('mainnet', // It's a test net based on the main ethereum net
|
|
13
|
-
{
|
|
14
|
-
name: 'alfajores',
|
|
15
|
-
networkId: statics_1.coins.get('tcelo').network.chainId,
|
|
16
|
-
chainId: statics_1.coins.get('tcelo').network.chainId,
|
|
17
|
-
}, 'petersburg');
|
|
18
|
-
/**
|
|
19
|
-
* A Common object defining the chain and the hardfork for CELO Mainnet
|
|
20
|
-
*/
|
|
21
|
-
exports.mainnetCommon = common_1.default.forCustomChain('mainnet', {
|
|
22
|
-
name: 'rc1',
|
|
23
|
-
networkId: statics_1.coins.get('celo').network.chainId,
|
|
24
|
-
chainId: statics_1.coins.get('celo').network.chainId,
|
|
25
|
-
}, 'petersburg');
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY2Vsby9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQXdEO0FBQ3hELGdFQUFnRDtBQUVoRDs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHLGdCQUFjLENBQUMsY0FBYyxDQUN4RCxTQUFTLEVBQUUsaURBQWlEO0FBQzVEO0lBQ0UsSUFBSSxFQUFFLFdBQVc7SUFDakIsU0FBUyxFQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0lBQ2xFLE9BQU8sRUFBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQTJCLENBQUMsT0FBTztDQUNqRSxFQUNELFlBQVksQ0FDYixDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGFBQWEsR0FBRyxnQkFBYyxDQUFDLGNBQWMsQ0FDeEQsU0FBUyxFQUNUO0lBQ0UsSUFBSSxFQUFFLEtBQUs7SUFDWCxTQUFTLEVBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUEyQixDQUFDLE9BQU87SUFDakUsT0FBTyxFQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBMkIsQ0FBQyxPQUFPO0NBQ2hFLEVBQ0QsWUFBWSxDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2lucywgRXRoZXJldW1OZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IEV0aGVyZXVtQ29tbW9uIGZyb20gJ0BldGhlcmV1bWpzL2NvbW1vbic7XG5cbi8qKlxuICogQSBDb21tb24gb2JqZWN0IGRlZmluaW5nIHRoZSBjaGFpbiBhbmQgdGhlIGhhcmRmb3JrIGZvciBDRUxPIFRlc3RuZXRcbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RuZXRDb21tb24gPSBFdGhlcmV1bUNvbW1vbi5mb3JDdXN0b21DaGFpbihcbiAgJ21haW5uZXQnLCAvLyBJdCdzIGEgdGVzdCBuZXQgYmFzZWQgb24gdGhlIG1haW4gZXRoZXJldW0gbmV0XG4gIHtcbiAgICBuYW1lOiAnYWxmYWpvcmVzJyxcbiAgICBuZXR3b3JrSWQ6IChjb2lucy5nZXQoJ3RjZWxvJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gICAgY2hhaW5JZDogKGNvaW5zLmdldCgndGNlbG8nKS5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZCxcbiAgfSxcbiAgJ3BldGVyc2J1cmcnLFxuKTtcblxuLyoqXG4gKiBBIENvbW1vbiBvYmplY3QgZGVmaW5pbmcgdGhlIGNoYWluIGFuZCB0aGUgaGFyZGZvcmsgZm9yIENFTE8gTWFpbm5ldFxuICovXG5leHBvcnQgY29uc3QgbWFpbm5ldENvbW1vbiA9IEV0aGVyZXVtQ29tbW9uLmZvckN1c3RvbUNoYWluKFxuICAnbWFpbm5ldCcsXG4gIHtcbiAgICBuYW1lOiAncmMxJyxcbiAgICBuZXR3b3JrSWQ6IChjb2lucy5nZXQoJ2NlbG8nKS5uZXR3b3JrIGFzIEV0aGVyZXVtTmV0d29yaykuY2hhaW5JZCxcbiAgICBjaGFpbklkOiAoY29pbnMuZ2V0KCdjZWxvJykubmV0d29yayBhcyBFdGhlcmV1bU5ldHdvcmspLmNoYWluSWQsXG4gIH0sXG4gICdwZXRlcnNidXJnJyxcbik7XG4iXX0=
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
-
import { StakingOperationTypes } from '@bitgo/sdk-core';
|
|
3
|
-
import { StakingCall } from './stakingCall';
|
|
4
|
-
export declare class StakingBuilder {
|
|
5
|
-
private readonly DEFAULT_ADDRESS;
|
|
6
|
-
private _amount;
|
|
7
|
-
private _validatorGroup;
|
|
8
|
-
private _lesser;
|
|
9
|
-
private _greater;
|
|
10
|
-
private _index;
|
|
11
|
-
private _type;
|
|
12
|
-
private _coinConfig;
|
|
13
|
-
constructor(coinConfig: Readonly<CoinConfig>, serializedData?: string);
|
|
14
|
-
type(type: StakingOperationTypes): this;
|
|
15
|
-
amount(value: string): this;
|
|
16
|
-
group(validatorGroup: string): this;
|
|
17
|
-
lesser(lesser: string): this;
|
|
18
|
-
greater(greater: string): this;
|
|
19
|
-
index(index: number): this;
|
|
20
|
-
build(): StakingCall;
|
|
21
|
-
/**
|
|
22
|
-
* Builds a lock gold operation sending the amount on the transaction value field
|
|
23
|
-
*
|
|
24
|
-
* @returns {StakingCall} a lock gold operation using the LockedGold contract
|
|
25
|
-
*/
|
|
26
|
-
private buildLockStaking;
|
|
27
|
-
/**
|
|
28
|
-
* Builds an unlock gold operation sending the amount encoded on the data field
|
|
29
|
-
*
|
|
30
|
-
* params
|
|
31
|
-
* amount: amount of locked gold to be unlocked
|
|
32
|
-
*
|
|
33
|
-
* @returns {StakingCall} an unlock gold operation using the LockedGold contract
|
|
34
|
-
*/
|
|
35
|
-
private buildUnlockStaking;
|
|
36
|
-
/**
|
|
37
|
-
* Builds a vote operation that uses locked gold to add pending votes for a validator group.
|
|
38
|
-
*
|
|
39
|
-
* params
|
|
40
|
-
* validatorGroup: group to vote for
|
|
41
|
-
* amount: amount of votes (locked gold) for the group
|
|
42
|
-
* lesser: validator group that has less votes than the validatorGroup
|
|
43
|
-
* greater: validator group that has more vots than the validatorGroup
|
|
44
|
-
*
|
|
45
|
-
* @returns {StakingCall} an vote operation using the Election contract
|
|
46
|
-
*/
|
|
47
|
-
private buildVoteStaking;
|
|
48
|
-
/**
|
|
49
|
-
* Builds an unvote operation to revoke active votes for a validator group.
|
|
50
|
-
*
|
|
51
|
-
* params
|
|
52
|
-
* validatorGroup: group whose votes will be revoked
|
|
53
|
-
* amount: amount of votes (locked gold) that will be revoked
|
|
54
|
-
* lesser: validator group that has less votes than the validatorGroup
|
|
55
|
-
* greater: validator group that has more vots than the validatorGroup
|
|
56
|
-
* index: index of the validatorGroup on the list of groups the address has voted for
|
|
57
|
-
*
|
|
58
|
-
* @returns {StakingCall} an vote operation using the Election contract
|
|
59
|
-
*/
|
|
60
|
-
private buildUnvoteStaking;
|
|
61
|
-
/**
|
|
62
|
-
* Builds an activate vote operation to change all the votes casted for a validator
|
|
63
|
-
* from 'pending' to 'active'
|
|
64
|
-
*
|
|
65
|
-
* params
|
|
66
|
-
* validatorGroup: group whose votes will be activated
|
|
67
|
-
*
|
|
68
|
-
* @returns {StakingCall} an activate votes operation
|
|
69
|
-
*/
|
|
70
|
-
private buildActivateStaking;
|
|
71
|
-
/**
|
|
72
|
-
* Builds a withdraw operation for locked gold that has been unlocked
|
|
73
|
-
* after the unlocking period has passed.
|
|
74
|
-
*
|
|
75
|
-
* params
|
|
76
|
-
* index: index of the unlock operation whose unlocking period has passed.
|
|
77
|
-
*
|
|
78
|
-
* @returns {StakingCall} an activate votes operation
|
|
79
|
-
*/
|
|
80
|
-
private buildWithdrawStaking;
|
|
81
|
-
private validateMandatoryFields;
|
|
82
|
-
private validateElectionFields;
|
|
83
|
-
private validateIndex;
|
|
84
|
-
private validateAmount;
|
|
85
|
-
private validateUnvoteFields;
|
|
86
|
-
private validateGroup;
|
|
87
|
-
private decodeStakingData;
|
|
88
|
-
private validateDecodedDataLength;
|
|
89
|
-
private classifyStakingType;
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=stakingBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stakingBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/celo/stakingBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQxD,OAAO,EAML,qBAAqB,EAKtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgD;IAChF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM;IASrE,IAAI,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAKvC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3B,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ9B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY1B,KAAK,IAAI,WAAW;IA0BpB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,iBAAiB;IA6CzB,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,mBAAmB;CAiB5B"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.StakingBuilder = void 0;
|
|
7
|
-
const ethereumjs_utils_old_1 = __importDefault(require("@bitgo/ethereumjs-utils-old"));
|
|
8
|
-
const sdk_coin_eth_1 = require("@bitgo/sdk-coin-eth");
|
|
9
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
10
|
-
const stakingCall_1 = require("./stakingCall");
|
|
11
|
-
class StakingBuilder {
|
|
12
|
-
constructor(coinConfig, serializedData) {
|
|
13
|
-
this.DEFAULT_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
14
|
-
this._lesser = this.DEFAULT_ADDRESS;
|
|
15
|
-
this._greater = this.DEFAULT_ADDRESS;
|
|
16
|
-
this._coinConfig = coinConfig;
|
|
17
|
-
if (serializedData) {
|
|
18
|
-
this.decodeStakingData(serializedData);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
// region Staking properties
|
|
22
|
-
type(type) {
|
|
23
|
-
this._type = type;
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
amount(value) {
|
|
27
|
-
if (!sdk_coin_eth_1.isValidAmount(value)) {
|
|
28
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid value for stake transaction');
|
|
29
|
-
}
|
|
30
|
-
this._amount = value;
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
group(validatorGroup) {
|
|
34
|
-
if (!sdk_coin_eth_1.isValidEthAddress(validatorGroup)) {
|
|
35
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid validator group address');
|
|
36
|
-
}
|
|
37
|
-
this._validatorGroup = validatorGroup;
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
lesser(lesser) {
|
|
41
|
-
if (!sdk_coin_eth_1.isValidEthAddress(lesser)) {
|
|
42
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address for lesser');
|
|
43
|
-
}
|
|
44
|
-
this._lesser = lesser;
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
greater(greater) {
|
|
48
|
-
if (!sdk_coin_eth_1.isValidEthAddress(greater)) {
|
|
49
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid address for greater');
|
|
50
|
-
}
|
|
51
|
-
this._greater = greater;
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
index(index) {
|
|
55
|
-
if (index < 0) {
|
|
56
|
-
throw new sdk_core_1.InvalidParameterValueError('Invalid index for staking transaction');
|
|
57
|
-
}
|
|
58
|
-
this._index = index;
|
|
59
|
-
return this;
|
|
60
|
-
}
|
|
61
|
-
// endregion
|
|
62
|
-
// region Staking building
|
|
63
|
-
build() {
|
|
64
|
-
this.validateMandatoryFields();
|
|
65
|
-
switch (this._type) {
|
|
66
|
-
case sdk_core_1.StakingOperationTypes.LOCK:
|
|
67
|
-
this.validateAmount();
|
|
68
|
-
return this.buildLockStaking();
|
|
69
|
-
case sdk_core_1.StakingOperationTypes.VOTE:
|
|
70
|
-
this.validateElectionFields();
|
|
71
|
-
return this.buildVoteStaking();
|
|
72
|
-
case sdk_core_1.StakingOperationTypes.ACTIVATE:
|
|
73
|
-
this.validateGroup();
|
|
74
|
-
return this.buildActivateStaking();
|
|
75
|
-
case sdk_core_1.StakingOperationTypes.UNVOTE:
|
|
76
|
-
this.validateUnvoteFields();
|
|
77
|
-
return this.buildUnvoteStaking();
|
|
78
|
-
case sdk_core_1.StakingOperationTypes.UNLOCK:
|
|
79
|
-
this.validateAmount();
|
|
80
|
-
return this.buildUnlockStaking();
|
|
81
|
-
case sdk_core_1.StakingOperationTypes.WITHDRAW:
|
|
82
|
-
this.validateIndex();
|
|
83
|
-
return this.buildWithdrawStaking();
|
|
84
|
-
default:
|
|
85
|
-
throw new sdk_core_1.InvalidTransactionError('Invalid staking operation: ' + this._type);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Builds a lock gold operation sending the amount on the transaction value field
|
|
90
|
-
*
|
|
91
|
-
* @returns {StakingCall} a lock gold operation using the LockedGold contract
|
|
92
|
-
*/
|
|
93
|
-
buildLockStaking() {
|
|
94
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
95
|
-
return new stakingCall_1.StakingCall(this._amount, operation.contractAddress, operation.methodId, operation.types, []);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Builds an unlock gold operation sending the amount encoded on the data field
|
|
99
|
-
*
|
|
100
|
-
* params
|
|
101
|
-
* amount: amount of locked gold to be unlocked
|
|
102
|
-
*
|
|
103
|
-
* @returns {StakingCall} an unlock gold operation using the LockedGold contract
|
|
104
|
-
*/
|
|
105
|
-
buildUnlockStaking() {
|
|
106
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
107
|
-
const params = [this._amount];
|
|
108
|
-
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Builds a vote operation that uses locked gold to add pending votes for a validator group.
|
|
112
|
-
*
|
|
113
|
-
* params
|
|
114
|
-
* validatorGroup: group to vote for
|
|
115
|
-
* amount: amount of votes (locked gold) for the group
|
|
116
|
-
* lesser: validator group that has less votes than the validatorGroup
|
|
117
|
-
* greater: validator group that has more vots than the validatorGroup
|
|
118
|
-
*
|
|
119
|
-
* @returns {StakingCall} an vote operation using the Election contract
|
|
120
|
-
*/
|
|
121
|
-
buildVoteStaking() {
|
|
122
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
123
|
-
const params = [this._validatorGroup, this._amount, this._lesser, this._greater];
|
|
124
|
-
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Builds an unvote operation to revoke active votes for a validator group.
|
|
128
|
-
*
|
|
129
|
-
* params
|
|
130
|
-
* validatorGroup: group whose votes will be revoked
|
|
131
|
-
* amount: amount of votes (locked gold) that will be revoked
|
|
132
|
-
* lesser: validator group that has less votes than the validatorGroup
|
|
133
|
-
* greater: validator group that has more vots than the validatorGroup
|
|
134
|
-
* index: index of the validatorGroup on the list of groups the address has voted for
|
|
135
|
-
*
|
|
136
|
-
* @returns {StakingCall} an vote operation using the Election contract
|
|
137
|
-
*/
|
|
138
|
-
buildUnvoteStaking() {
|
|
139
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
140
|
-
const params = [this._validatorGroup, this._amount, this._lesser, this._greater, this._index.toString()];
|
|
141
|
-
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Builds an activate vote operation to change all the votes casted for a validator
|
|
145
|
-
* from 'pending' to 'active'
|
|
146
|
-
*
|
|
147
|
-
* params
|
|
148
|
-
* validatorGroup: group whose votes will be activated
|
|
149
|
-
*
|
|
150
|
-
* @returns {StakingCall} an activate votes operation
|
|
151
|
-
*/
|
|
152
|
-
buildActivateStaking() {
|
|
153
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
154
|
-
const params = [this._validatorGroup];
|
|
155
|
-
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Builds a withdraw operation for locked gold that has been unlocked
|
|
159
|
-
* after the unlocking period has passed.
|
|
160
|
-
*
|
|
161
|
-
* params
|
|
162
|
-
* index: index of the unlock operation whose unlocking period has passed.
|
|
163
|
-
*
|
|
164
|
-
* @returns {StakingCall} an activate votes operation
|
|
165
|
-
*/
|
|
166
|
-
buildWithdrawStaking() {
|
|
167
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
168
|
-
const params = [this._index.toString()];
|
|
169
|
-
return new stakingCall_1.StakingCall('0', operation.contractAddress, operation.methodId, operation.types, params);
|
|
170
|
-
}
|
|
171
|
-
// endregion
|
|
172
|
-
// region Validation methods
|
|
173
|
-
validateMandatoryFields() {
|
|
174
|
-
if (!(this._type !== undefined && this._coinConfig)) {
|
|
175
|
-
throw new sdk_core_1.BuildTransactionError('Missing staking mandatory fields. Type and coin are required');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
validateElectionFields() {
|
|
179
|
-
this.validateGroup();
|
|
180
|
-
this.validateAmount();
|
|
181
|
-
if (this._lesser === this._greater) {
|
|
182
|
-
throw new sdk_core_1.BuildTransactionError('Greater and lesser values should not be the same');
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
validateIndex() {
|
|
186
|
-
if (this._index === undefined) {
|
|
187
|
-
throw new sdk_core_1.BuildTransactionError('Missing index for staking transaction');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
validateAmount() {
|
|
191
|
-
if (this._amount === undefined) {
|
|
192
|
-
throw new sdk_core_1.BuildTransactionError('Missing amount for staking transaction');
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
validateUnvoteFields() {
|
|
196
|
-
this.validateElectionFields();
|
|
197
|
-
this.validateIndex();
|
|
198
|
-
}
|
|
199
|
-
validateGroup() {
|
|
200
|
-
if (!this._validatorGroup) {
|
|
201
|
-
throw new sdk_core_1.BuildTransactionError('Missing validator group for staking transaction');
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// endregion
|
|
205
|
-
// region Deserialization methods
|
|
206
|
-
decodeStakingData(data) {
|
|
207
|
-
this.classifyStakingType(data);
|
|
208
|
-
const operation = sdk_core_1.getOperationConfig(this._type, this._coinConfig.network.type);
|
|
209
|
-
const decoded = sdk_coin_eth_1.getRawDecoded(operation.types, sdk_coin_eth_1.getBufferedByteCode(operation.methodId, data));
|
|
210
|
-
switch (this._type) {
|
|
211
|
-
case sdk_core_1.StakingOperationTypes.VOTE:
|
|
212
|
-
this.validateDecodedDataLength(decoded.length, 4, data);
|
|
213
|
-
const [groupToVote, amount, lesser, greater] = decoded;
|
|
214
|
-
this._amount = ethereumjs_utils_old_1.default.bufferToHex(amount);
|
|
215
|
-
this._validatorGroup = ethereumjs_utils_old_1.default.addHexPrefix(groupToVote);
|
|
216
|
-
this._lesser = ethereumjs_utils_old_1.default.addHexPrefix(lesser);
|
|
217
|
-
this._greater = ethereumjs_utils_old_1.default.addHexPrefix(greater);
|
|
218
|
-
break;
|
|
219
|
-
case sdk_core_1.StakingOperationTypes.UNVOTE:
|
|
220
|
-
this.validateDecodedDataLength(decoded.length, 5, data);
|
|
221
|
-
const [groupToUnvote, amountUnvote, lesserUnvote, greaterUnvote, indexUnvote] = decoded;
|
|
222
|
-
this._validatorGroup = ethereumjs_utils_old_1.default.addHexPrefix(groupToUnvote);
|
|
223
|
-
this._amount = ethereumjs_utils_old_1.default.bufferToHex(amountUnvote);
|
|
224
|
-
this._lesser = ethereumjs_utils_old_1.default.addHexPrefix(lesserUnvote);
|
|
225
|
-
this._greater = ethereumjs_utils_old_1.default.addHexPrefix(greaterUnvote);
|
|
226
|
-
this._index = sdk_coin_eth_1.hexStringToNumber(ethereumjs_utils_old_1.default.bufferToHex(indexUnvote));
|
|
227
|
-
break;
|
|
228
|
-
case sdk_core_1.StakingOperationTypes.ACTIVATE:
|
|
229
|
-
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
230
|
-
const [groupToActivate] = decoded;
|
|
231
|
-
this._validatorGroup = ethereumjs_utils_old_1.default.addHexPrefix(groupToActivate);
|
|
232
|
-
break;
|
|
233
|
-
case sdk_core_1.StakingOperationTypes.UNLOCK:
|
|
234
|
-
if (decoded.length !== 1) {
|
|
235
|
-
throw new sdk_core_1.BuildTransactionError(`Invalid unlock decoded data: ${data}`);
|
|
236
|
-
}
|
|
237
|
-
const [decodedAmount] = decoded;
|
|
238
|
-
this._amount = ethereumjs_utils_old_1.default.bufferToHex(decodedAmount);
|
|
239
|
-
break;
|
|
240
|
-
case sdk_core_1.StakingOperationTypes.WITHDRAW:
|
|
241
|
-
this.validateDecodedDataLength(decoded.length, 1, data);
|
|
242
|
-
const [index] = decoded;
|
|
243
|
-
this._index = sdk_coin_eth_1.hexStringToNumber(ethereumjs_utils_old_1.default.bufferToHex(index));
|
|
244
|
-
break;
|
|
245
|
-
default:
|
|
246
|
-
throw new sdk_core_1.BuildTransactionError(`Invalid staking data: ${this._type}`);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
validateDecodedDataLength(actual, expected, data) {
|
|
250
|
-
if (actual !== expected) {
|
|
251
|
-
throw new sdk_core_1.BuildTransactionError(`Invalid staking decoded data: ${data}`);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
classifyStakingType(data) {
|
|
255
|
-
if (data.startsWith(sdk_core_1.VoteMethodId)) {
|
|
256
|
-
this._type = sdk_core_1.StakingOperationTypes.VOTE;
|
|
257
|
-
}
|
|
258
|
-
else if (data.startsWith(sdk_core_1.UnvoteMethodId)) {
|
|
259
|
-
this._type = sdk_core_1.StakingOperationTypes.UNVOTE;
|
|
260
|
-
}
|
|
261
|
-
else if (data.startsWith(sdk_core_1.ActivateMethodId)) {
|
|
262
|
-
this._type = sdk_core_1.StakingOperationTypes.ACTIVATE;
|
|
263
|
-
}
|
|
264
|
-
else if (data.startsWith(sdk_core_1.UnlockMethodId)) {
|
|
265
|
-
this._type = sdk_core_1.StakingOperationTypes.UNLOCK;
|
|
266
|
-
}
|
|
267
|
-
else if (data.startsWith(sdk_core_1.WithdrawMethodId)) {
|
|
268
|
-
this._type = sdk_core_1.StakingOperationTypes.WITHDRAW;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
throw new sdk_core_1.BuildTransactionError(`Invalid staking bytecode: ${data}`);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
exports.StakingBuilder = StakingBuilder;
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0J1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9jZWxvL3N0YWtpbmdCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVGQUFrRDtBQUVsRCxzREFNNkI7QUFDN0IsOENBV3lCO0FBQ3pCLCtDQUE0QztBQUU1QyxNQUFhLGNBQWM7SUFVekIsWUFBWSxVQUFnQyxFQUFFLGNBQXVCO1FBVHBELG9CQUFlLEdBQUcsNENBQTRDLENBQUM7UUFHeEUsWUFBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDL0IsYUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFNdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsSUFBSSxjQUFjLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixJQUFJLENBQUMsSUFBMkI7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLDRCQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsTUFBTSxJQUFJLHFDQUEwQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDN0U7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsY0FBc0I7UUFDMUIsSUFBSSxDQUFDLGdDQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsT0FBTyxJQUFJ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LENBQUMsdUJBQVksQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsSUFBSSxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUFjLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLE1BQU0sQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBZ0IsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsUUFBUSxDQUFDO1NBQzdDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLHlCQUFjLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLGdDQUFxQixDQUFDLE1BQU0sQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBZ0IsQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0NBQXFCLENBQUMsUUFBUSxDQUFDO1NBQzdDO2FBQU07WUFDTCxNQUFNLElBQUksZ0NBQXFCLENBQUMsNkJBQTZCLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBR0Y7QUF2U0Qsd0NBdVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV0aFV0aWwgZnJvbSAnQGJpdGdvL2V0aGVyZXVtanMtdXRpbHMtb2xkJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBpc1ZhbGlkQW1vdW50LFxuICBpc1ZhbGlkRXRoQWRkcmVzcyxcbiAgZ2V0UmF3RGVjb2RlZCxcbiAgZ2V0QnVmZmVyZWRCeXRlQ29kZSxcbiAgaGV4U3RyaW5nVG9OdW1iZXIsXG59IGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGgnO1xuaW1wb3J0IHtcbiAgQWN0aXZhdGVNZXRob2RJZCxcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBnZXRPcGVyYXRpb25Db25maWcsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgU3Rha2luZ09wZXJhdGlvblR5cGVzLFxuICBVbmxvY2tNZXRob2RJZCxcbiAgVW52b3RlTWV0aG9kSWQsXG4gIFZvdGVNZXRob2RJZCxcbiAgV2l0aGRyYXdNZXRob2RJZCxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFN0YWtpbmdDYWxsIH0gZnJvbSAnLi9zdGFraW5nQ2FsbCc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9BRERSRVNTID0gJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG4gIHByaXZhdGUgX2Ftb3VudDogc3RyaW5nO1xuICBwcml2YXRlIF92YWxpZGF0b3JHcm91cDogc3RyaW5nO1xuICBwcml2YXRlIF9sZXNzZXIgPSB0aGlzLkRFRkFVTFRfQUREUkVTUztcbiAgcHJpdmF0ZSBfZ3JlYXRlciA9IHRoaXMuREVGQVVMVF9BRERSRVNTO1xuICBwcml2YXRlIF9pbmRleDogbnVtYmVyO1xuICBwcml2YXRlIF90eXBlOiBTdGFraW5nT3BlcmF0aW9uVHlwZXM7XG4gIHByaXZhdGUgX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBzZXJpYWxpemVkRGF0YT86IHN0cmluZykge1xuICAgIHRoaXMuX2NvaW5Db25maWcgPSBjb2luQ29uZmlnO1xuICAgIGlmIChzZXJpYWxpemVkRGF0YSkge1xuICAgICAgdGhpcy5kZWNvZGVTdGFraW5nRGF0YShzZXJpYWxpemVkRGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVnaW9uIFN0YWtpbmcgcHJvcGVydGllc1xuXG4gIHR5cGUodHlwZTogU3Rha2luZ09wZXJhdGlvblR5cGVzKTogdGhpcyB7XG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhbW91bnQodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZEFtb3VudCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZSBmb3Igc3Rha2UgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBncm91cCh2YWxpZGF0b3JHcm91cDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyh2YWxpZGF0b3JHcm91cCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWxpZGF0b3IgZ3JvdXAgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl92YWxpZGF0b3JHcm91cCA9IHZhbGlkYXRvckdyb3VwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbGVzc2VyKGxlc3Nlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhsZXNzZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyBmb3IgbGVzc2VyJyk7XG4gICAgfVxuICAgIHRoaXMuX2xlc3NlciA9IGxlc3NlcjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdyZWF0ZXIoZ3JlYXRlcjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpc1ZhbGlkRXRoQWRkcmVzcyhncmVhdGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFkZHJlc3MgZm9yIGdyZWF0ZXInKTtcbiAgICB9XG4gICAgdGhpcy5fZ3JlYXRlciA9IGdyZWF0ZXI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpbmRleChpbmRleDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGluZGV4IGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gU3Rha2luZyBidWlsZGluZ1xuXG4gIGJ1aWxkKCk6IFN0YWtpbmdDYWxsIHtcbiAgICB0aGlzLnZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5MT0NLOlxuICAgICAgICB0aGlzLnZhbGlkYXRlQW1vdW50KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkTG9ja1N0YWtpbmcoKTtcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFZvdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUdyb3VwKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQWN0aXZhdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVVbnZvdGVGaWVsZHMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRVbnZvdGVTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0s6XG4gICAgICAgIHRoaXMudmFsaWRhdGVBbW91bnQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRVbmxvY2tTdGFraW5nKCk7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5XSVRIRFJBVzpcbiAgICAgICAgdGhpcy52YWxpZGF0ZUluZGV4KCk7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkV2l0aGRyYXdTdGFraW5nKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgc3Rha2luZyBvcGVyYXRpb246ICcgKyB0aGlzLl90eXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgbG9jayBnb2xkIG9wZXJhdGlvbiBzZW5kaW5nIHRoZSBhbW91bnQgb24gdGhlIHRyYW5zYWN0aW9uIHZhbHVlIGZpZWxkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYSBsb2NrIGdvbGQgb3BlcmF0aW9uIHVzaW5nIHRoZSBMb2NrZWRHb2xkIGNvbnRyYWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9ja1N0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCh0aGlzLl9hbW91bnQsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIHVubG9jayBnb2xkIG9wZXJhdGlvbiBzZW5kaW5nIHRoZSBhbW91bnQgZW5jb2RlZCBvbiB0aGUgZGF0YSBmaWVsZFxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogYW1vdW50OiBhbW91bnQgb2YgbG9ja2VkIGdvbGQgdG8gYmUgdW5sb2NrZWRcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB1bmxvY2sgZ29sZCBvcGVyYXRpb24gdXNpbmcgdGhlIExvY2tlZEdvbGQgY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRVbmxvY2tTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl9hbW91bnRdO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSB2b3RlIG9wZXJhdGlvbiB0aGF0IHVzZXMgbG9ja2VkIGdvbGQgdG8gYWRkIHBlbmRpbmcgdm90ZXMgZm9yIGEgdmFsaWRhdG9yIGdyb3VwLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHRvIHZvdGUgZm9yXG4gICAqIGFtb3VudDogYW1vdW50IG9mIHZvdGVzIChsb2NrZWQgZ29sZCkgZm9yIHRoZSBncm91cFxuICAgKiBsZXNzZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBsZXNzIHZvdGVzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqIGdyZWF0ZXI6IHZhbGlkYXRvciBncm91cCB0aGF0IGhhcyBtb3JlIHZvdHMgdGhhbiB0aGUgdmFsaWRhdG9yR3JvdXBcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB2b3RlIG9wZXJhdGlvbiB1c2luZyB0aGUgRWxlY3Rpb24gY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRWb3RlU3Rha2luZygpOiBTdGFraW5nQ2FsbCB7XG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBwYXJhbXMgPSBbdGhpcy5fdmFsaWRhdG9yR3JvdXAsIHRoaXMuX2Ftb3VudCwgdGhpcy5fbGVzc2VyLCB0aGlzLl9ncmVhdGVyXTtcbiAgICByZXR1cm4gbmV3IFN0YWtpbmdDYWxsKCcwJywgb3BlcmF0aW9uLmNvbnRyYWN0QWRkcmVzcywgb3BlcmF0aW9uLm1ldGhvZElkLCBvcGVyYXRpb24udHlwZXMsIHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuIHVudm90ZSBvcGVyYXRpb24gdG8gcmV2b2tlIGFjdGl2ZSB2b3RlcyBmb3IgYSB2YWxpZGF0b3IgZ3JvdXAuXG4gICAqXG4gICAqIHBhcmFtc1xuICAgKiB2YWxpZGF0b3JHcm91cDogZ3JvdXAgd2hvc2Ugdm90ZXMgd2lsbCBiZSByZXZva2VkXG4gICAqIGFtb3VudDogYW1vdW50IG9mIHZvdGVzIChsb2NrZWQgZ29sZCkgdGhhdCB3aWxsIGJlIHJldm9rZWRcbiAgICogbGVzc2VyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbGVzcyB2b3RlcyB0aGFuIHRoZSB2YWxpZGF0b3JHcm91cFxuICAgKiBncmVhdGVyOiB2YWxpZGF0b3IgZ3JvdXAgdGhhdCBoYXMgbW9yZSB2b3RzIHRoYW4gdGhlIHZhbGlkYXRvckdyb3VwXG4gICAqIGluZGV4OiBpbmRleCBvZiB0aGUgdmFsaWRhdG9yR3JvdXAgb24gdGhlIGxpc3Qgb2YgZ3JvdXBzIHRoZSBhZGRyZXNzIGhhcyB2b3RlZCBmb3JcbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiB2b3RlIG9wZXJhdGlvbiB1c2luZyB0aGUgRWxlY3Rpb24gY29udHJhY3RcbiAgICovXG4gIHByaXZhdGUgYnVpbGRVbnZvdGVTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl92YWxpZGF0b3JHcm91cCwgdGhpcy5fYW1vdW50LCB0aGlzLl9sZXNzZXIsIHRoaXMuX2dyZWF0ZXIsIHRoaXMuX2luZGV4LnRvU3RyaW5nKCldO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW4gYWN0aXZhdGUgdm90ZSBvcGVyYXRpb24gdG8gY2hhbmdlIGFsbCB0aGUgdm90ZXMgY2FzdGVkIGZvciBhIHZhbGlkYXRvclxuICAgKiBmcm9tICdwZW5kaW5nJyB0byAnYWN0aXZlJ1xuICAgKlxuICAgKiBwYXJhbXNcbiAgICogdmFsaWRhdG9yR3JvdXA6IGdyb3VwIHdob3NlIHZvdGVzIHdpbGwgYmUgYWN0aXZhdGVkXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdGFraW5nQ2FsbH0gYW4gYWN0aXZhdGUgdm90ZXMgb3BlcmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWN0aXZhdGVTdGFraW5nKCk6IFN0YWtpbmdDYWxsIHtcbiAgICBjb25zdCBvcGVyYXRpb24gPSBnZXRPcGVyYXRpb25Db25maWcodGhpcy5fdHlwZSwgdGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrLnR5cGUpO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLl92YWxpZGF0b3JHcm91cF07XG4gICAgcmV0dXJuIG5ldyBTdGFraW5nQ2FsbCgnMCcsIG9wZXJhdGlvbi5jb250cmFjdEFkZHJlc3MsIG9wZXJhdGlvbi5tZXRob2RJZCwgb3BlcmF0aW9uLnR5cGVzLCBwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHdpdGhkcmF3IG9wZXJhdGlvbiBmb3IgbG9ja2VkIGdvbGQgdGhhdCBoYXMgYmVlbiB1bmxvY2tlZFxuICAgKiBhZnRlciB0aGUgdW5sb2NraW5nIHBlcmlvZCBoYXMgcGFzc2VkLlxuICAgKlxuICAgKiBwYXJhbXNcbiAgICogaW5kZXg6IGluZGV4IG9mIHRoZSB1bmxvY2sgb3BlcmF0aW9uIHdob3NlIHVubG9ja2luZyBwZXJpb2QgaGFzIHBhc3NlZC5cbiAgICpcbiAgICogQHJldHVybnMge1N0YWtpbmdDYWxsfSBhbiBhY3RpdmF0ZSB2b3RlcyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgYnVpbGRXaXRoZHJhd1N0YWtpbmcoKTogU3Rha2luZ0NhbGwge1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IGdldE9wZXJhdGlvbkNvbmZpZyh0aGlzLl90eXBlLCB0aGlzLl9jb2luQ29uZmlnLm5ldHdvcmsudHlwZSk7XG4gICAgY29uc3QgcGFyYW1zID0gW3RoaXMuX2luZGV4LnRvU3RyaW5nKCldO1xuICAgIHJldHVybiBuZXcgU3Rha2luZ0NhbGwoJzAnLCBvcGVyYXRpb24uY29udHJhY3RBZGRyZXNzLCBvcGVyYXRpb24ubWV0aG9kSWQsIG9wZXJhdGlvbi50eXBlcywgcGFyYW1zKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBWYWxpZGF0aW9uIG1ldGhvZHNcblxuICBwcml2YXRlIHZhbGlkYXRlTWFuZGF0b3J5RmllbGRzKCk6IHZvaWQge1xuICAgIGlmICghKHRoaXMuX3R5cGUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9jb2luQ29uZmlnKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBzdGFraW5nIG1hbmRhdG9yeSBmaWVsZHMuIFR5cGUgYW5kIGNvaW4gYXJlIHJlcXVpcmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUVsZWN0aW9uRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVHcm91cCgpO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQoKTtcbiAgICBpZiAodGhpcy5fbGVzc2VyID09PSB0aGlzLl9ncmVhdGVyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdHcmVhdGVyIGFuZCBsZXNzZXIgdmFsdWVzIHNob3VsZCBub3QgYmUgdGhlIHNhbWUnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlSW5kZXgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgaW5kZXggZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlQW1vdW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hbW91bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWlzc2luZyBhbW91bnQgZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVW52b3RlRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVFbGVjdGlvbkZpZWxkcygpO1xuICAgIHRoaXMudmFsaWRhdGVJbmRleCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUdyb3VwKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdmFsaWRhdG9yR3JvdXApIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pc3NpbmcgdmFsaWRhdG9yIGdyb3VwIGZvciBzdGFraW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIERlc2VyaWFsaXphdGlvbiBtZXRob2RzXG4gIHByaXZhdGUgZGVjb2RlU3Rha2luZ0RhdGEoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGFzc2lmeVN0YWtpbmdUeXBlKGRhdGEpO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gZ2V0T3BlcmF0aW9uQ29uZmlnKHRoaXMuX3R5cGUsIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlKTtcbiAgICBjb25zdCBkZWNvZGVkID0gZ2V0UmF3RGVjb2RlZChvcGVyYXRpb24udHlwZXMsIGdldEJ1ZmZlcmVkQnl0ZUNvZGUob3BlcmF0aW9uLm1ldGhvZElkLCBkYXRhKSk7XG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5WT1RFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDQsIGRhdGEpO1xuICAgICAgICBjb25zdCBbZ3JvdXBUb1ZvdGUsIGFtb3VudCwgbGVzc2VyLCBncmVhdGVyXSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX2Ftb3VudCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoYW1vdW50KTtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSBldGhVdGlsLmFkZEhleFByZWZpeChncm91cFRvVm90ZSk7XG4gICAgICAgIHRoaXMuX2xlc3NlciA9IGV0aFV0aWwuYWRkSGV4UHJlZml4KGxlc3Nlcik7XG4gICAgICAgIHRoaXMuX2dyZWF0ZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChncmVhdGVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTlZPVEU6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgNSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtncm91cFRvVW52b3RlLCBhbW91bnRVbnZvdGUsIGxlc3NlclVudm90ZSwgZ3JlYXRlclVudm90ZSwgaW5kZXhVbnZvdGVdID0gZGVjb2RlZDtcbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yR3JvdXAgPSBldGhVdGlsLmFkZEhleFByZWZpeChncm91cFRvVW52b3RlKTtcbiAgICAgICAgdGhpcy5fYW1vdW50ID0gZXRoVXRpbC5idWZmZXJUb0hleChhbW91bnRVbnZvdGUpO1xuICAgICAgICB0aGlzLl9sZXNzZXIgPSBldGhVdGlsLmFkZEhleFByZWZpeChsZXNzZXJVbnZvdGUpO1xuICAgICAgICB0aGlzLl9ncmVhdGVyID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JlYXRlclVudm90ZSk7XG4gICAgICAgIHRoaXMuX2luZGV4ID0gaGV4U3RyaW5nVG9OdW1iZXIoZXRoVXRpbC5idWZmZXJUb0hleChpbmRleFVudm90ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU3Rha2luZ09wZXJhdGlvblR5cGVzLkFDVElWQVRFOlxuICAgICAgICB0aGlzLnZhbGlkYXRlRGVjb2RlZERhdGFMZW5ndGgoZGVjb2RlZC5sZW5ndGgsIDEsIGRhdGEpO1xuICAgICAgICBjb25zdCBbZ3JvdXBUb0FjdGl2YXRlXSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckdyb3VwID0gZXRoVXRpbC5hZGRIZXhQcmVmaXgoZ3JvdXBUb0FjdGl2YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFN0YWtpbmdPcGVyYXRpb25UeXBlcy5VTkxPQ0s6XG4gICAgICAgIGlmIChkZWNvZGVkLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdW5sb2NrIGRlY29kZWQgZGF0YTogJHtkYXRhfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtkZWNvZGVkQW1vdW50XSA9IGRlY29kZWQ7XG4gICAgICAgIHRoaXMuX2Ftb3VudCA9IGV0aFV0aWwuYnVmZmVyVG9IZXgoZGVjb2RlZEFtb3VudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuV0lUSERSQVc6XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChkZWNvZGVkLmxlbmd0aCwgMSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IFtpbmRleF0gPSBkZWNvZGVkO1xuICAgICAgICB0aGlzLl9pbmRleCA9IGhleFN0cmluZ1RvTnVtYmVyKGV0aFV0aWwuYnVmZmVyVG9IZXgoaW5kZXgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgZGF0YTogJHt0aGlzLl90eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVEZWNvZGVkRGF0YUxlbmd0aChhY3R1YWw6IG51bWJlciwgZXhwZWN0ZWQ6IG51bWJlciwgZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgc3Rha2luZyBkZWNvZGVkIGRhdGE6ICR7ZGF0YX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYXNzaWZ5U3Rha2luZ1R5cGUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGRhdGEuc3RhcnRzV2l0aChWb3RlTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlZPVEU7XG4gICAgfSBlbHNlIGlmIChkYXRhLnN0YXJ0c1dpdGgoVW52b3RlTWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLlVOVk9URTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChBY3RpdmF0ZU1ldGhvZElkKSkge1xuICAgICAgdGhpcy5fdHlwZSA9IFN0YWtpbmdPcGVyYXRpb25UeXBlcy5BQ1RJVkFURTtcbiAgICB9IGVsc2UgaWYgKGRhdGEuc3RhcnRzV2l0aChVbmxvY2tNZXRob2RJZCkpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSBTdGFraW5nT3BlcmF0aW9uVHlwZXMuVU5MT0NLO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5zdGFydHNXaXRoKFdpdGhkcmF3TWV0aG9kSWQpKSB7XG4gICAgICB0aGlzLl90eXBlID0gU3Rha2luZ09wZXJhdGlvblR5cGVzLldJVEhEUkFXO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHN0YWtpbmcgYnl0ZWNvZGU6ICR7ZGF0YX1gKTtcbiAgICB9XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
|