@bitgo/account-lib 2.19.0-rc.14 → 2.19.0-rc.15
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/dist/browser/bitgo-account-lib.js +1 -1
- package/dist/package.json +3 -3
- package/package.json +3 -3
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts +0 -60
- package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +0 -1
- package/dist/src/coin/dot/walletInitializationBuilder.js +0 -144
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/account-lib",
|
|
3
|
-
"version": "2.19.0-rc.
|
|
3
|
+
"version": "2.19.0-rc.15",
|
|
4
4
|
"description": "BitGo's account library functions",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@bitgo/blake2b": "^3.0.2",
|
|
40
40
|
"@bitgo/bls": "^0.1.0",
|
|
41
41
|
"@bitgo/bls-dkg": "^1.0.2-rc.0",
|
|
42
|
-
"@bitgo/statics": "^6.17.0-rc.
|
|
42
|
+
"@bitgo/statics": "^6.17.0-rc.10",
|
|
43
43
|
"@celo/contractkit": "^1.2.4",
|
|
44
44
|
"@ethereumjs/common": "^2.4.0",
|
|
45
45
|
"@ethereumjs/tx": "^3.3.0",
|
|
@@ -126,5 +126,5 @@
|
|
|
126
126
|
"publishConfig": {
|
|
127
127
|
"access": "public"
|
|
128
128
|
},
|
|
129
|
-
"gitHead": "
|
|
129
|
+
"gitHead": "cefaadfe5050b3de83775ae59ae4567590633853"
|
|
130
130
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo/account-lib",
|
|
3
|
-
"version": "2.19.0-rc.
|
|
3
|
+
"version": "2.19.0-rc.15",
|
|
4
4
|
"description": "BitGo's account library functions",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@bitgo/blake2b": "^3.0.2",
|
|
40
40
|
"@bitgo/bls": "^0.1.0",
|
|
41
41
|
"@bitgo/bls-dkg": "^1.0.2-rc.0",
|
|
42
|
-
"@bitgo/statics": "^6.17.0-rc.
|
|
42
|
+
"@bitgo/statics": "^6.17.0-rc.10",
|
|
43
43
|
"@celo/contractkit": "^1.2.4",
|
|
44
44
|
"@ethereumjs/common": "^2.4.0",
|
|
45
45
|
"@ethereumjs/tx": "^3.3.0",
|
|
@@ -126,5 +126,5 @@
|
|
|
126
126
|
"publishConfig": {
|
|
127
127
|
"access": "public"
|
|
128
128
|
},
|
|
129
|
-
"gitHead": "
|
|
129
|
+
"gitHead": "cefaadfe5050b3de83775ae59ae4567590633853"
|
|
130
130
|
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
2
|
-
import { TransactionBuilder } from './transactionBuilder';
|
|
3
|
-
import { Transaction } from './transaction';
|
|
4
|
-
import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
|
|
5
|
-
import { TransactionType } from '../baseCoin';
|
|
6
|
-
import { proxyType } from './iface';
|
|
7
|
-
import { BaseAddress } from '../baseCoin/iface';
|
|
8
|
-
export declare class WalletInitializationBuilder extends TransactionBuilder {
|
|
9
|
-
protected _delegate: string;
|
|
10
|
-
protected _proxyType: proxyType;
|
|
11
|
-
protected _delay: string;
|
|
12
|
-
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
13
|
-
/**
|
|
14
|
-
* Register a proxy account for the sender that is able to make calls on its behalf.
|
|
15
|
-
*
|
|
16
|
-
* @returns {UnsignedTransaction} an unsigned Dot transaction
|
|
17
|
-
*
|
|
18
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
|
|
19
|
-
*/
|
|
20
|
-
protected buildTransaction(): UnsignedTransaction;
|
|
21
|
-
protected get transactionType(): TransactionType;
|
|
22
|
-
/**
|
|
23
|
-
* The account to delegate auth to.
|
|
24
|
-
*
|
|
25
|
-
* @param {BaseAddress} owner
|
|
26
|
-
* @returns {WalletInitializationBuilder} This builder.
|
|
27
|
-
*
|
|
28
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
|
|
29
|
-
*/
|
|
30
|
-
owner(owner: BaseAddress): this;
|
|
31
|
-
/**
|
|
32
|
-
* The proxy type to add.
|
|
33
|
-
*
|
|
34
|
-
* @param {proxyType} proxyType
|
|
35
|
-
* @returns {WalletInitializationBuilder} This builder.
|
|
36
|
-
*
|
|
37
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
|
|
38
|
-
*/
|
|
39
|
-
type(proxyType: proxyType): this;
|
|
40
|
-
/**
|
|
41
|
-
* The number of blocks that an announcement must be in place for.
|
|
42
|
-
* before the corresponding call may be dispatched.
|
|
43
|
-
* If zero, then no announcement is needed.
|
|
44
|
-
* TODO: move to the validity window method once it has been standardized
|
|
45
|
-
*
|
|
46
|
-
* @param {string} delay
|
|
47
|
-
* @returns {WalletInitializationBuilder} This transfer builder.
|
|
48
|
-
*
|
|
49
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#time-delayed-proxies
|
|
50
|
-
*/
|
|
51
|
-
delay(delay: string): this;
|
|
52
|
-
/** @inheritdoc */
|
|
53
|
-
validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx): void;
|
|
54
|
-
/** @inheritdoc */
|
|
55
|
-
protected fromImplementation(rawTransaction: string): Transaction;
|
|
56
|
-
/** @inheritdoc */
|
|
57
|
-
validateTransaction(_: Transaction): void;
|
|
58
|
-
private validateFields;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=walletInitializationBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"walletInitializationBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/dot/walletInitializationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAA6B,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC;IAChC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IAajD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAM/B;;;;;;;OAOG;IACH,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKhC;;;;;;;;;;OAUG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM1B,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,GAAG,IAAI;IAarF,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAejE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAavB"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
-
};
|
|
20
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.WalletInitializationBuilder = void 0;
|
|
22
|
-
var txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
23
|
-
var bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
24
|
-
var errors_1 = require("../baseCoin/errors");
|
|
25
|
-
var transactionBuilder_1 = require("./transactionBuilder");
|
|
26
|
-
var baseCoin_1 = require("../baseCoin");
|
|
27
|
-
var iface_1 = require("./iface");
|
|
28
|
-
var txnSchema_1 = require("./txnSchema");
|
|
29
|
-
var WalletInitializationBuilder = /** @class */ (function (_super) {
|
|
30
|
-
__extends(WalletInitializationBuilder, _super);
|
|
31
|
-
function WalletInitializationBuilder(_coinConfig) {
|
|
32
|
-
return _super.call(this, _coinConfig) || this;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Register a proxy account for the sender that is able to make calls on its behalf.
|
|
36
|
-
*
|
|
37
|
-
* @returns {UnsignedTransaction} an unsigned Dot transaction
|
|
38
|
-
*
|
|
39
|
-
* @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
|
|
40
|
-
*/
|
|
41
|
-
WalletInitializationBuilder.prototype.buildTransaction = function () {
|
|
42
|
-
var baseTxInfo = this.createBaseTxInfo();
|
|
43
|
-
return txwrapper_polkadot_1.methods.proxy.addProxy({
|
|
44
|
-
delegate: this._delegate,
|
|
45
|
-
proxyType: this._proxyType,
|
|
46
|
-
delay: this._delay,
|
|
47
|
-
}, baseTxInfo.baseTxInfo, baseTxInfo.options);
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(WalletInitializationBuilder.prototype, "transactionType", {
|
|
50
|
-
get: function () {
|
|
51
|
-
return baseCoin_1.TransactionType.WalletInitialization;
|
|
52
|
-
},
|
|
53
|
-
enumerable: false,
|
|
54
|
-
configurable: true
|
|
55
|
-
});
|
|
56
|
-
/**
|
|
57
|
-
* The account to delegate auth to.
|
|
58
|
-
*
|
|
59
|
-
* @param {BaseAddress} owner
|
|
60
|
-
* @returns {WalletInitializationBuilder} This builder.
|
|
61
|
-
*
|
|
62
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#why-use-a-proxy
|
|
63
|
-
*/
|
|
64
|
-
WalletInitializationBuilder.prototype.owner = function (owner) {
|
|
65
|
-
this.validateAddress({ address: owner.address });
|
|
66
|
-
this._delegate = owner.address;
|
|
67
|
-
return this;
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* The proxy type to add.
|
|
71
|
-
*
|
|
72
|
-
* @param {proxyType} proxyType
|
|
73
|
-
* @returns {WalletInitializationBuilder} This builder.
|
|
74
|
-
*
|
|
75
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#proxy-types
|
|
76
|
-
*/
|
|
77
|
-
WalletInitializationBuilder.prototype.type = function (proxyType) {
|
|
78
|
-
this._proxyType = proxyType;
|
|
79
|
-
return this;
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* The number of blocks that an announcement must be in place for.
|
|
83
|
-
* before the corresponding call may be dispatched.
|
|
84
|
-
* If zero, then no announcement is needed.
|
|
85
|
-
* TODO: move to the validity window method once it has been standardized
|
|
86
|
-
*
|
|
87
|
-
* @param {string} delay
|
|
88
|
-
* @returns {WalletInitializationBuilder} This transfer builder.
|
|
89
|
-
*
|
|
90
|
-
* @see https://wiki.polkadot.network/docs/learn-proxies#time-delayed-proxies
|
|
91
|
-
*/
|
|
92
|
-
WalletInitializationBuilder.prototype.delay = function (delay) {
|
|
93
|
-
this.validateValue(new bignumber_js_1.default(parseInt(delay, 10)));
|
|
94
|
-
this._delay = delay;
|
|
95
|
-
return this;
|
|
96
|
-
};
|
|
97
|
-
/** @inheritdoc */
|
|
98
|
-
WalletInitializationBuilder.prototype.validateDecodedTransaction = function (decodedTxn) {
|
|
99
|
-
var _a;
|
|
100
|
-
if (((_a = decodedTxn.method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.AddProxy) {
|
|
101
|
-
var txMethod = decodedTxn.method.args;
|
|
102
|
-
var delegate = txMethod.delegate;
|
|
103
|
-
var proxyType = txMethod.proxyType;
|
|
104
|
-
var delay = txMethod.delay;
|
|
105
|
-
var validationResult = txnSchema_1.WalletInitializationSchema.validate({ delegate: delegate, proxyType: proxyType, delay: delay });
|
|
106
|
-
if (validationResult.error) {
|
|
107
|
-
throw new errors_1.InvalidTransactionError("Transaction validation failed: " + validationResult.error.message);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
/** @inheritdoc */
|
|
112
|
-
WalletInitializationBuilder.prototype.fromImplementation = function (rawTransaction) {
|
|
113
|
-
var _a, _b;
|
|
114
|
-
var tx = _super.prototype.fromImplementation.call(this, rawTransaction);
|
|
115
|
-
if (((_a = this._method) === null || _a === void 0 ? void 0 : _a.name) === iface_1.MethodNames.AddProxy) {
|
|
116
|
-
var txMethod = this._method.args;
|
|
117
|
-
this.owner({ address: txMethod.delegate });
|
|
118
|
-
this.type(txMethod.proxyType);
|
|
119
|
-
this.delay(new bignumber_js_1.default(txMethod.delay).toString());
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
throw new errors_1.InvalidTransactionError("Invalid Transaction Type: " + ((_b = this._method) === null || _b === void 0 ? void 0 : _b.name) + ". Expected Wallet initialization");
|
|
123
|
-
}
|
|
124
|
-
return tx;
|
|
125
|
-
};
|
|
126
|
-
/** @inheritdoc */
|
|
127
|
-
WalletInitializationBuilder.prototype.validateTransaction = function (_) {
|
|
128
|
-
_super.prototype.validateTransaction.call(this, _);
|
|
129
|
-
this.validateFields(this._delegate, this._proxyType, this._delay);
|
|
130
|
-
};
|
|
131
|
-
WalletInitializationBuilder.prototype.validateFields = function (delegate, proxyType, delay) {
|
|
132
|
-
var validationResult = txnSchema_1.WalletInitializationSchema.validate({
|
|
133
|
-
delegate: delegate,
|
|
134
|
-
proxyType: proxyType,
|
|
135
|
-
delay: delay,
|
|
136
|
-
});
|
|
137
|
-
if (validationResult.error) {
|
|
138
|
-
throw new errors_1.InvalidTransactionError("WalletInitialization Transaction validation failed: " + validationResult.error.message);
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
return WalletInitializationBuilder;
|
|
142
|
-
}(transactionBuilder_1.TransactionBuilder));
|
|
143
|
-
exports.WalletInitializationBuilder = WalletInitializationBuilder;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vZG90L3dhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxvRUFBd0Q7QUFDeEQsOERBQXFDO0FBQ3JDLDZDQUE2RDtBQUM3RCwyREFBMEQ7QUFHMUQsd0NBQThDO0FBQzlDLGlDQUErRDtBQUMvRCx5Q0FBeUQ7QUFHekQ7SUFBaUQsK0NBQWtCO0lBS2pFLHFDQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sc0RBQWdCLEdBQTFCO1FBQ0UsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsT0FBTyw0QkFBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzNCO1lBQ0UsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDbkIsRUFDRCxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFjLHdEQUFlO2FBQTdCO1lBQ0UsT0FBTywwQkFBZSxDQUFDLG9CQUFvQixDQUFDO1FBQzlDLENBQUM7OztPQUFBO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDJDQUFLLEdBQUwsVUFBTSxLQUFrQjtRQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7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QUFDLEtBQUssQ0FBQyxPQUFTLENBQ3hGLENBQUM7U0FDSDtJQUNILENBQUM7SUFDSCxrQ0FBQztBQUFELENBQUMsQUE5SEQsQ0FBaUQsdUNBQWtCLEdBOEhsRTtBQTlIWSxrRUFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEZWNvZGVkU2lnbmVkVHgsIERlY29kZWRTaWduaW5nUGF5bG9hZCwgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQWRkUHJveHlBcmdzLCBNZXRob2ROYW1lcywgcHJveHlUeXBlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBXYWxsZXRJbml0aWFsaXphdGlvblNjaGVtYSB9IGZyb20gJy4vdHhuU2NoZW1hJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzIH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9kZWxlZ2F0ZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3Byb3h5VHlwZTogcHJveHlUeXBlO1xuICBwcm90ZWN0ZWQgX2RlbGF5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VW5zaWduZWRUcmFuc2FjdGlvbn0gYW4gdW5zaWduZWQgRG90IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wb2xrYWRvdC5qcy5vcmcvZG9jcy9zdWJzdHJhdGUvZXh0cmluc2ljcy8jcHJveHlcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFRyYW5zYWN0aW9uKCk6IFVuc2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGJhc2VUeEluZm8gPSB0aGlzLmNyZWF0ZUJhc2VUeEluZm8oKTtcbiAgICByZXR1cm4gbWV0aG9kcy5wcm94eS5hZGRQcm94eShcbiAgICAgIHtcbiAgICAgICAgZGVsZWdhdGU6IHRoaXMuX2RlbGVnYXRlLFxuICAgICAgICBwcm94eVR5cGU6IHRoaXMuX3Byb3h5VHlwZSxcbiAgICAgICAgZGVsYXk6IHRoaXMuX2RlbGF5LFxuICAgICAgfSxcbiAgICAgIGJhc2VUeEluZm8uYmFzZVR4SW5mbyxcbiAgICAgIGJhc2VUeEluZm8ub3B0aW9ucyxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIGF1dGggdG8uXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IG93bmVyXG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXJ9IFRoaXMgYnVpbGRlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3dpa2kucG9sa2Fkb3QubmV0d29yay9kb2NzL2xlYXJuLXByb3hpZXMjd2h5LXVzZS1hLXByb3h5XG4gICAqL1xuICBvd25lcihvd25lcjogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IG93bmVyLmFkZHJlc3MgfSk7XG4gICAgdGhpcy5fZGVsZWdhdGUgPSBvd25lci5hZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwcm94eSB0eXBlIHRvIGFkZC5cbiAgICpcbiAgICogQHBhcmFtIHtwcm94eVR5cGV9IHByb3h5VHlwZVxuICAgKiBAcmV0dXJucyB7V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyfSBUaGlzIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1wcm94aWVzI3Byb3h5LXR5cGVzXG4gICAqL1xuICB0eXBlKHByb3h5VHlwZTogcHJveHlUeXBlKTogdGhpcyB7XG4gICAgdGhpcy5fcHJveHlUeXBlID0gcHJveHlUeXBlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgYW4gYW5ub3VuY2VtZW50IG11c3QgYmUgaW4gcGxhY2UgZm9yLlxuICAgKiBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbCBtYXkgYmUgZGlzcGF0Y2hlZC5cbiAgICogSWYgemVybywgdGhlbiBubyBhbm5vdW5jZW1lbnQgaXMgbmVlZGVkLlxuICAgKiBUT0RPOiBtb3ZlIHRvIHRoZSB2YWxpZGl0eSB3aW5kb3cgbWV0aG9kIG9uY2UgaXQgaGFzIGJlZW4gc3RhbmRhcmRpemVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZWxheVxuICAgKiBAcmV0dXJucyB7V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1wcm94aWVzI3RpbWUtZGVsYXllZC1wcm94aWVzXG4gICAqL1xuICBkZWxheShkZWxheTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIocGFyc2VJbnQoZGVsYXksIDEwKSkpO1xuICAgIHRoaXMuX2RlbGF5ID0gZGVsYXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4bjogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogdm9pZCB7XG4gICAgaWYgKGRlY29kZWRUeG4ubWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5BZGRQcm94eSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHhuLm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQWRkUHJveHlBcmdzO1xuICAgICAgY29uc3QgZGVsZWdhdGUgPSB0eE1ldGhvZC5kZWxlZ2F0ZTtcbiAgICAgIGNvbnN0IHByb3h5VHlwZSA9IHR4TWV0aG9kLnByb3h5VHlwZTtcbiAgICAgIGNvbnN0IGRlbGF5ID0gdHhNZXRob2QuZGVsYXk7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gV2FsbGV0SW5pdGlhbGl6YXRpb25TY2hlbWEudmFsaWRhdGUoeyBkZWxlZ2F0ZSwgcHJveHlUeXBlLCBkZWxheSB9KTtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBzdXBlci5mcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGlmICh0aGlzLl9tZXRob2Q/Lm5hbWUgPT09IE1ldGhvZE5hbWVzLkFkZFByb3h5KSB7XG4gICAgICBjb25zdCB0eE1ldGhvZCA9IHRoaXMuX21ldGhvZC5hcmdzIGFzIEFkZFByb3h5QXJncztcbiAgICAgIHRoaXMub3duZXIoeyBhZGRyZXNzOiB0eE1ldGhvZC5kZWxlZ2F0ZSB9KTtcbiAgICAgIHRoaXMudHlwZSh0eE1ldGhvZC5wcm94eVR5cGUpO1xuICAgICAgdGhpcy5kZWxheShuZXcgQmlnTnVtYmVyKHR4TWV0aG9kLmRlbGF5KS50b1N0cmluZygpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIFdhbGxldCBpbml0aWFsaXphdGlvbmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbihfOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24oXyk7XG4gICAgdGhpcy52YWxpZGF0ZUZpZWxkcyh0aGlzLl9kZWxlZ2F0ZSwgdGhpcy5fcHJveHlUeXBlLCB0aGlzLl9kZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRmllbGRzKGRlbGVnYXRlOiBzdHJpbmcsIHByb3h5VHlwZTogc3RyaW5nLCBkZWxheTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdmFsaWRhdGlvblJlc3VsdCA9IFdhbGxldEluaXRpYWxpemF0aW9uU2NoZW1hLnZhbGlkYXRlKHtcbiAgICAgIGRlbGVnYXRlLFxuICAgICAgcHJveHlUeXBlLFxuICAgICAgZGVsYXksXG4gICAgfSk7XG5cbiAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgV2FsbGV0SW5pdGlhbGl6YXRpb24gVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|