@bitgo/account-lib 27.5.0 → 27.6.1
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/index.d.ts +14 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +38 -3
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +5 -1
- package/dist/src/utils/messages/index.d.ts +10 -0
- package/dist/src/utils/messages/index.d.ts.map +1 -0
- package/dist/src/utils/messages/index.js +30 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +62 -61
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [27.6.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@27.6.0...@bitgo/account-lib@27.6.1) (2025-07-15)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @bitgo/account-lib
|
|
9
|
+
|
|
10
|
+
# [27.6.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@27.5.0...@bitgo/account-lib@27.6.0) (2025-07-10)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **account-lib:** add MessageBuilderFactory mapping for ada and sol ([1ab0358](https://github.com/BitGo/BitGoJS/commit/1ab03583b54396106484009b65ee932cde5fb278))
|
|
15
|
+
- **account-lib:** verify encoded message ([71a7dd6](https://github.com/BitGo/BitGoJS/commit/71a7dd6cf56010c94364483b7c83221d9a26688e))
|
|
16
|
+
|
|
6
17
|
# [27.5.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/account-lib@27.4.1...@bitgo/account-lib@27.5.0) (2025-07-03)
|
|
7
18
|
|
|
8
19
|
### Features
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseBuilder, BaseTransactionBuilderFactory, Ed25519KeyDeriver, Ed25519BIP32, Eddsa, accountLibBaseCoin, acountLibCrypto, BaseMessageBuilderFactory } from '@bitgo/sdk-core';
|
|
1
|
+
import { BaseBuilder, BaseTransactionBuilderFactory, Ed25519KeyDeriver, Ed25519BIP32, Eddsa, accountLibBaseCoin, acountLibCrypto, BaseMessageBuilderFactory, MessageStandardType } from '@bitgo/sdk-core';
|
|
2
2
|
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
3
|
export { Ed25519BIP32, Eddsa };
|
|
4
4
|
/**
|
|
@@ -76,6 +76,8 @@ import * as Asi from '@bitgo/sdk-coin-asi';
|
|
|
76
76
|
export { Asi };
|
|
77
77
|
import * as Sol from '@bitgo/sdk-coin-sol';
|
|
78
78
|
export { Sol };
|
|
79
|
+
import * as Ada from '@bitgo/sdk-coin-ada';
|
|
80
|
+
export { Ada };
|
|
79
81
|
import * as Dot from '@bitgo/sdk-coin-dot';
|
|
80
82
|
export { Dot };
|
|
81
83
|
import * as Near from '@bitgo/sdk-coin-near';
|
|
@@ -158,4 +160,15 @@ export declare function register<T extends BaseTransactionBuilderFactory>(coinNa
|
|
|
158
160
|
export declare function registerMessageBuilderFactory<T extends BaseMessageBuilderFactory>(coinName: string, messageBuilderFactory: {
|
|
159
161
|
new (_coinConfig: Readonly<CoinConfig>): T;
|
|
160
162
|
}): T;
|
|
163
|
+
/**
|
|
164
|
+
* Verify a message against the given encoded payload.
|
|
165
|
+
*
|
|
166
|
+
* @param {string} coinName - The name of the coin.
|
|
167
|
+
* @param {string} messageRaw - The raw message to verify.
|
|
168
|
+
* @param {string} messageEncoded - The encoded message to verify against.
|
|
169
|
+
* @param {MessageStandardType} messageStandardType - The type of message standard.
|
|
170
|
+
* @param {Record<string, unknown>} [metadata] - Optional metadata for verification.
|
|
171
|
+
* @returns {Promise<boolean>} - Returns true if the verification is successful, false otherwise.
|
|
172
|
+
*/
|
|
173
|
+
export declare function verifyMessage(coinName: string, messageRaw: string, messageEncoded: string, messageStandardType: MessageStandardType, metadata?: Record<string, unknown>): Promise<boolean>;
|
|
161
174
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,6BAA6B,EAE7B,iBAAiB,EACjB,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -33,12 +33,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.supportedCoins = exports.Vet = exports.Soneium = exports.Stt = exports.World = exports.Wemix = exports.Xdc = exports.Sgb = exports.EvmCoin = exports.Flr = exports.Icp = exports.Tao = exports.Apechain = void 0;
|
|
36
|
+
exports.Coredao = exports.Oas = exports.zkEth = exports.XRP = exports.Ton = exports.Sui = exports.Opeth = exports.Polyx = exports.Polygon = exports.Bsc = exports.Near = exports.Dot = exports.Ada = exports.Sol = exports.Asi = exports.Initia = exports.Cronos = exports.Mantra = exports.Mon = exports.Baby = exports.Rune = exports.Coreum = exports.Zeta = exports.Islm = exports.Injective = exports.Sei = exports.Hash = exports.Bld = exports.Bera = exports.Tia = exports.AvaxP = exports.Osmo = exports.Atom = exports.Arbeth = exports.Algo = exports.Stx = exports.Cspr = exports.Hbar = exports.Celo = exports.Rbtc = exports.AvaxC = exports.Etc = exports.Eth = exports.Xtz = exports.Trx = exports.BaseCoin = exports.Ed25519KeyDeriver = exports.crypto = exports.Eddsa = exports.Ed25519BIP32 = void 0;
|
|
37
|
+
exports.supportedCoins = exports.Vet = exports.Soneium = exports.Stt = exports.World = exports.Wemix = exports.Xdc = exports.Sgb = exports.EvmCoin = exports.Flr = exports.Icp = exports.Tao = exports.Apechain = exports.Apt = void 0;
|
|
38
38
|
exports.getBuilder = getBuilder;
|
|
39
39
|
exports.getMessageBuilderFactory = getMessageBuilderFactory;
|
|
40
40
|
exports.register = register;
|
|
41
41
|
exports.registerMessageBuilderFactory = registerMessageBuilderFactory;
|
|
42
|
+
exports.verifyMessage = verifyMessage;
|
|
42
43
|
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
43
44
|
Object.defineProperty(exports, "Ed25519KeyDeriver", { enumerable: true, get: function () { return sdk_core_1.Ed25519KeyDeriver; } });
|
|
44
45
|
Object.defineProperty(exports, "Ed25519BIP32", { enumerable: true, get: function () { return sdk_core_1.Ed25519BIP32; } });
|
|
@@ -119,6 +120,8 @@ const Asi = __importStar(require("@bitgo/sdk-coin-asi"));
|
|
|
119
120
|
exports.Asi = Asi;
|
|
120
121
|
const Sol = __importStar(require("@bitgo/sdk-coin-sol"));
|
|
121
122
|
exports.Sol = Sol;
|
|
123
|
+
const Ada = __importStar(require("@bitgo/sdk-coin-ada"));
|
|
124
|
+
exports.Ada = Ada;
|
|
122
125
|
const Dot = __importStar(require("@bitgo/sdk-coin-dot"));
|
|
123
126
|
exports.Dot = Dot;
|
|
124
127
|
const Near = __importStar(require("@bitgo/sdk-coin-near"));
|
|
@@ -169,6 +172,7 @@ const Soneium = __importStar(require("@bitgo/sdk-coin-soneium"));
|
|
|
169
172
|
exports.Soneium = Soneium;
|
|
170
173
|
const Vet = __importStar(require("@bitgo/sdk-coin-vet"));
|
|
171
174
|
exports.Vet = Vet;
|
|
175
|
+
const utils_1 = require("./utils");
|
|
172
176
|
const coinBuilderMap = {
|
|
173
177
|
trx: Trx.WrappedBuilder,
|
|
174
178
|
ttrx: Trx.WrappedBuilder,
|
|
@@ -285,6 +289,10 @@ const coinBuilderMap = {
|
|
|
285
289
|
const coinMessageBuilderFactoryMap = {
|
|
286
290
|
eth: Eth.MessageBuilderFactory,
|
|
287
291
|
hteth: Eth.MessageBuilderFactory,
|
|
292
|
+
ada: Ada.MessageBuilderFactory,
|
|
293
|
+
tada: Ada.MessageBuilderFactory,
|
|
294
|
+
sol: Sol.MessageBuilderFactory,
|
|
295
|
+
tsol: Sol.MessageBuilderFactory,
|
|
288
296
|
};
|
|
289
297
|
statics_1.coins
|
|
290
298
|
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK))
|
|
@@ -342,4 +350,31 @@ function registerMessageBuilderFactory(coinName, messageBuilderFactory) {
|
|
|
342
350
|
coinMessageBuilderFactoryMap[coinName] = messageBuilderFactory;
|
|
343
351
|
return factory;
|
|
344
352
|
}
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlWQSxnQ0FPQztBQUVELDREQU1DO0FBU0QsNEJBU0M7QUFTRCxzRUFRQztBQW5ZRCw4Q0FXeUI7QUFVaEIsa0dBakJQLDRCQUFpQixPQWlCTztBQVJqQiw2RkFSUCx1QkFBWSxPQVFPO0FBQUUsc0ZBUHJCLGdCQUFLLE9BT3FCO0FBRDVCLDRDQUE0RTtBQUc1RTs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRywwQkFBZSxDQUFDO0FBSXRDOzs7R0FHRztBQUNVLFFBQUEsUUFBUSxHQUFHLDZCQUFrQixDQUFDO0FBRTNDLFFBQVE7QUFDUix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixzREFBb0Q7QUFDM0Msb0ZBRFUscUJBQUcsT0FDVjtBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QyxzQkFBSztBQUVkLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHdEQUF1RDtBQUM5QyxxRkFEVyx1QkFBSSxPQUNYO0FBRWIsc0RBQW9EO0FBQzNDLG9GQURVLHFCQUFHLE9BQ1Y7QUFFWix3REFBdUQ7QUFDOUMscUZBRFcsdUJBQUksT0FDWDtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDBEQUEwRDtBQUNqRCxzRkFEWSx5QkFBSyxPQUNaO0FBRWQseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIs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LElBQUksRUFBRSx1QkFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsdUJBQUksQ0FBQyx5QkFBeUI7SUFDckMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDbkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDcEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyx5QkFBeUI7SUFDOUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyx5QkFBeUI7SUFDL0MsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsTUFBTSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7SUFDeEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7SUFDekMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDbEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDaEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDaEMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7SUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7SUFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUI7SUFDckMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDbkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDcEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7SUFDckMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7SUFDdEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbkMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0I7SUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7SUFDOUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDbEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDaEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDakMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7SUFDbEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDL0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0I7SUFDaEMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDM0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDbkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxrQkFBa0I7SUFDcEMsS0FBSyxFQUFFLEtBQUssQ0FBQyx5QkFBeUI7SUFDdEMsTUFBTSxFQUFFLEtBQUssQ0FBQyx5QkFBeUI7SUFDdkMsR0FBRyxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7SUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyx5QkFBeUI7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxxQkFBcUI7SUFDOUIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxxQkFBcUI7Q0FDakMsQ0FBQztBQUVGLGVBQUs7S0FDRixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLHFCQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDcEUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDaEIsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDekQsQ0FBQyxDQUFDLENBQUM7QUFFTDs7R0FFRztBQUNVLFFBQUEsY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7QUFFMUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixVQUFVLENBQUMsUUFBZ0I7SUFDekMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksZ0NBQXFCLENBQUMsUUFBUSxRQUFRLGdCQUFnQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE9BQU8sSUFBSSxZQUFZLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxRQUFnQjtJQUN2RCxNQUFNLDBCQUEwQixHQUFHLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSw0QkFBaUIsQ0FBQyxvQ0FBb0MsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFDRCxPQUFPLElBQUksMEJBQTBCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixRQUFRLENBQ3RCLFFBQWdCLEVBQ2hCLGNBQThEO0lBRTlELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0Msc0NBQXNDO0lBQ3RDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxnRkFBZ0Y7SUFDM0gsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLDZCQUE2QixDQUMzQyxRQUFnQixFQUNoQixxQkFBcUU7SUFFckUsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxNQUFNLE9BQU8sR0FBRyxJQUFJLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RELDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO0lBQy9ELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRWQyNTUxOUtleURlcml2ZXIsXG4gIEVkMjU1MTlCSVAzMixcbiAgRWRkc2EsXG4gIGFjY291bnRMaWJCYXNlQ29pbixcbiAgYWNvdW50TGliQ3J5cHRvLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBCdWlsZE1lc3NhZ2VFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIENvaW5GZWF0dXJlLCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IEVkMjU1MTlCSVAzMiwgRWRkc2EgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNyeXB0byA9IGFjb3VudExpYkNyeXB0bztcblxuZXhwb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2luID0gYWNjb3VudExpYkJhc2VDb2luO1xuXG4vLyBjb2luc1xuaW1wb3J0ICogYXMgVHJ4IGZyb20gJ0BiaXRnby9zZGstY29pbi10cngnO1xuZXhwb3J0IHsgVHJ4IH07XG5cbmltcG9ydCB7IFh0ekxpYiBhcyBYdHogfSBmcm9tICdAYml0Z28vc2RrLWNvaW4teHR6JztcbmV4cG9ydCB7IFh0eiB9O1xuXG5pbXBvcnQgKiBhcyBFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBFdGggfTtcblxuaW1wb3J0ICogYXMgRXRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGMnO1xuZXhwb3J0IHsgRXRjIH07XG5cbmltcG9ydCAqIGFzIEF2YXhDIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdmF4Yyc7XG5leHBvcnQgeyBBdmF4QyB9O1xuXG5pbXBvcnQgKiBhcyBSYnRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1yYnRjJztcbmV4cG9ydCB7IFJidGMgfTtcblxuaW1wb3J0ICogYXMgQ2VsbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY2Vsbyc7XG5leHBvcnQgeyBDZWxvIH07XG5cbmltcG9ydCAqIGFzIEhiYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuZXhwb3J0IHsgSGJhciB9O1xuXG5pbXBvcnQgeyBDc3ByTGliIGFzIENzcHIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tY3Nwcic7XG5leHBvcnQgeyBDc3ByIH07XG5cbmltcG9ydCB7IFN0eExpYiBhcyBTdHggfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R4JztcbmV4cG9ydCB7IFN0eCB9O1xuXG5pbXBvcnQgeyBBbGdvTGliIGFzIEFsZ28gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWxnbyc7XG5leHBvcnQgeyBBbGdvIH07XG5cbmltcG9ydCAqIGFzIEFyYmV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXJiZXRoJztcbmV4cG9ydCB7IEFyYmV0aCB9O1xuXG5pbXBvcnQgKiBhcyBBdG9tIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdG9tJztcbmV4cG9ydCB7IEF0b20gfTtcblxuaW1wb3J0ICogYXMgT3NtbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3Ntbyc7XG5leHBvcnQgeyBPc21vIH07XG5cbmltcG9ydCB7IEF2YXhwTGliIGFzIEF2YXhQIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWF2YXhwJztcbmV4cG9ydCB7IEF2YXhQIH07XG5cbmltcG9ydCAqIGFzIFRpYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tdGlhJztcbmV4cG9ydCB7IFRpYSB9O1xuXG5pbXBvcnQgKiBhcyBCZXJhIGZyb20gJ0BiaXRnby9zZGstY29pbi1iZXJhJztcbmV4cG9ydCB7IEJlcmEgfTtcblxuaW1wb3J0ICogYXMgQmxkIGZyb20gJ0BiaXRnby9zZGstY29pbi1ibGQnO1xuZXhwb3J0IHsgQmxkIH07XG5cbmltcG9ydCAqIGFzIEhhc2ggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhhc2gnO1xuZXhwb3J0IHsgSGFzaCB9O1xuXG5pbXBvcnQgKiBhcyBTZWkgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNlaSc7XG5leHBvcnQgeyBTZWkgfTtcblxuaW1wb3J0ICogYXMgSW5qZWN0aXZlIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbmplY3RpdmUnO1xuZXhwb3J0IHsgSW5qZWN0aXZlIH07XG5cbmltcG9ydCAqIGFzIElzbG0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWlzbG0nO1xuZXhwb3J0IHsgSXNsbSB9O1xuXG5pbXBvcnQgKiBhcyBaZXRhIGZyb20gJ0BiaXRnby9zZGstY29pbi16ZXRhJztcbmV4cG9ydCB7IFpldGEgfTtcblxuaW1wb3J0ICogYXMgQ29yZXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JldW0nO1xuZXhwb3J0IHsgQ29yZXVtIH07XG5cbmltcG9ydCAqIGFzIFJ1bmUgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXJ1bmUnO1xuZXhwb3J0IHsgUnVuZSB9O1xuXG5pbXBvcnQgKiBhcyBCYWJ5IGZyb20gJ0BiaXRnby9zZGstY29pbi1iYWJ5JztcbmV4cG9ydCB7IEJhYnkgfTtcblxuaW1wb3J0ICogYXMgTW9uIGZyb20gJ0BiaXRnby9zZGstY29pbi1tb24nO1xuZXhwb3J0IHsgTW9uIH07XG5cbmltcG9ydCAqIGFzIE1hbnRyYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tbWFudHJhJztcbmV4cG9ydCB7IE1hbnRyYSB9O1xuXG5pbXBvcnQgKiBhcyBDcm9ub3MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNyb25vcyc7XG5leHBvcnQgeyBDcm9ub3MgfTtcblxuaW1wb3J0ICogYXMgSW5pdGlhIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbml0aWEnO1xuZXhwb3J0IHsgSW5pdGlhIH07XG5cbmltcG9ydCAqIGFzIEFzaSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXNpJztcbmV4cG9ydCB7IEFzaSB9O1xuXG5pbXBvcnQgKiBhcyBTb2wgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbCc7XG5leHBvcnQgeyBTb2wgfTtcblxuaW1wb3J0ICogYXMgRG90IGZyb20gJ0BiaXRnby9zZGstY29pbi1kb3QnO1xuZXhwb3J0IHsgRG90IH07XG5cbmltcG9ydCAqIGFzIE5lYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLW5lYXInO1xuZXhwb3J0IHsgTmVhciB9O1xuXG5pbXBvcnQgKiBhcyBCc2MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWJzYyc7XG5leHBvcnQgeyBCc2MgfTtcblxuaW1wb3J0ICogYXMgUG9seWdvbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tcG9seWdvbic7XG5leHBvcnQgeyBQb2x5Z29uIH07XG5cbmltcG9ydCAqIGFzIFBvbHl4IGZyb20gJ0BiaXRnby9zZGstY29pbi1wb2x5eCc7XG5leHBvcnQgeyBQb2x5eCB9O1xuXG5pbXBvcnQgKiBhcyBPcGV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3BldGgnO1xuZXhwb3J0IHsgT3BldGggfTtcblxuaW1wb3J0ICogYXMgU3VpIGZyb20gJ0BiaXRnby9zZGstY29pbi1zdWknO1xuZXhwb3J0IHsgU3VpIH07XG5cbmltcG9ydCAqIGFzIFRvbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tdG9uJztcbmV4cG9ydCB7IFRvbiB9O1xuXG5pbXBvcnQgKiBhcyBYUlAgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXhycCc7XG5leHBvcnQgeyBYUlAgfTtcblxuaW1wb3J0ICogYXMgemtFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLXprZXRoJztcbmV4cG9ydCB7IHprRXRoIH07XG5cbmltcG9ydCAqIGFzIE9hcyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb2FzJztcbmV4cG9ydCB7IE9hcyB9O1xuXG5pbXBvcnQgKiBhcyBDb3JlZGFvIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JlZGFvJztcbmV4cG9ydCB7IENvcmVkYW8gfTtcblxuaW1wb3J0ICogYXMgQXB0IGZyb20gJ0BiaXRnby9zZGstY29pbi1hcHQnO1xuZXhwb3J0IHsgQXB0IH07XG5cbmltcG9ydCAqIGFzIEFwZWNoYWluIGZyb20gJ0BiaXRnby9zZGstY29pbi1hcGVjaGFpbic7XG5leHBvcnQgeyBBcGVjaGFpbiB9O1xuXG5pbXBvcnQgKiBhcyBUYW8gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRhbyc7XG5leHBvcnQgeyBUYW8gfTtcblxuaW1wb3J0ICogYXMgSWNwIGZyb20gJ0BiaXRnby9zZGstY29pbi1pY3AnO1xuZXhwb3J0IHsgSWNwIH07XG5cbmltcG9ydCAqIGFzIEZsciBmcm9tICdAYml0Z28vc2RrLWNvaW4tZmxyJztcbmV4cG9ydCB7IEZsciB9O1xuXG5pbXBvcnQgKiBhcyBFdm1Db2luIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldm0nO1xuZXhwb3J0IHsgRXZtQ29pbiB9O1xuXG5pbXBvcnQgKiBhcyBTZ2IgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNnYic7XG5leHBvcnQgeyBTZ2IgfTtcblxuaW1wb3J0ICogYXMgWGRjIGZyb20gJ0BiaXRnby9zZGstY29pbi14ZGMnO1xuZXhwb3J0IHsgWGRjIH07XG5cbmltcG9ydCAqIGFzIFdlbWl4IGZyb20gJ0BiaXRnby9zZGstY29pbi13ZW1peCc7XG5leHBvcnQgeyBXZW1peCB9O1xuXG5pbXBvcnQgKiBhcyBXb3JsZCBmcm9tICdAYml0Z28vc2RrLWNvaW4td29ybGQnO1xuZXhwb3J0IHsgV29ybGQgfTtcblxuaW1wb3J0ICogYXMgU3R0IGZyb20gJ0BiaXRnby9zZGstY29pbi1zdHQnO1xuZXhwb3J0IHsgU3R0IH07XG5cbmltcG9ydCAqIGFzIFNvbmVpdW0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbmVpdW0nO1xuZXhwb3J0IHsgU29uZWl1bSB9O1xuXG5pbXBvcnQgKiBhcyBWZXQgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXZldCc7XG5leHBvcnQgeyBWZXQgfTtcblxuY29uc3QgY29pbkJ1aWxkZXJNYXAgPSB7XG4gIHRyeDogVHJ4LldyYXBwZWRCdWlsZGVyLFxuICB0dHJ4OiBUcnguV3JhcHBlZEJ1aWxkZXIsXG4gIHh0ejogWHR6LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHh0ejogWHR6LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgZXRjOiBFdGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0ZXRjOiBFdGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGd0ZXRoOiBFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBodGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcmJ0YzogUmJ0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRyYnRjOiBSYnRjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgY2VsbzogQ2Vsby5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRjZWxvOiBDZWxvLlRlc3RuZXRUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGF2YXhjOiBBdmF4Qy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhdmF4YzogQXZheEMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBic2M6IEJzYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRic2M6IEJzYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGF2YXhwOiBBdmF4UC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YXZheHA6IEF2YXhQLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGhiYXI6IEhiYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGhiYXI6IEhiYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgY3NwcjogQ3Nwci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0Y3NwcjogQ3Nwci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzdHg6IFN0eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c3R4OiBTdHguVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYWxnbzogQWxnby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YWxnbzogQWxnby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzb2w6IFNvbC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c29sOiBTb2wuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgZG90OiBEb3QuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGRvdDogRG90LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIG5lYXI6IE5lYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgcG9seWdvbjogUG9seWdvbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRwb2x5Z29uOiBQb2x5Z29uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc3VpOiBTdWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHN1aTogU3VpLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRpYTogVGlhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR0aWE6IFRpYS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBhdG9tOiBBdG9tLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhdG9tOiBBdG9tLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIG9zbW86IE9zbW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdG9zbW86IE9zbW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYmxkOiBCbGQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGJsZDogQmxkLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGhhc2g6IEhhc2guVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGhhc2g6IEhhc2guVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgc2VpOiBTZWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHNlaTogU2VpLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGluamVjdGl2ZTogSW5qZWN0aXZlLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRpbmplY3RpdmU6IEluamVjdGl2ZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB6ZXRhOiBaZXRhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR6ZXRhOiBaZXRhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGlzbG06IElzbG0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGlzbG06IElzbG0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgY29yZXVtOiBDb3JldW0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGNvcmV1bTogQ29yZXVtLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGFyYmV0aDogQXJiZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGFyYmV0aDogQXJiZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgb3BldGg6IE9wZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9wZXRoOiBPcGV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRvbjogVG9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHRvbjogVG9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgemtldGg6IHprRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHprZXRoOiB6a0V0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJlcmE6IEJlcmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YmVyYTogQmVyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHJ1bmU6IFJ1bmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHJ1bmU6IFJ1bmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgb2FzOiBPYXMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0b2FzOiBPYXMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjb3JlZGFvOiBDb3JlZGFvLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNvcmVkYW86IENvcmVkYW8uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhcGVjaGFpbjogQXBlY2hhaW4uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXBlY2hhaW46IEFwZWNoYWluLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXB0OiBBcHQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXB0OiBBcHQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YW86IFRhby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0dGFvOiBUYW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaWNwOiBJY3AuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0aWNwOiBJY3AuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBiYWJ5OiBCYWJ5LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGJhYnk6IEJhYnkuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjcm9ub3M6IENyb25vcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRjcm9ub3M6IENyb25vcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGluaXRpYTogSW5pdGlhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGluaXRpYTogSW5pdGlhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXNpOiBBc2kuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXNpOiBBc2kuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBmbHI6IEZsci5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRmbHI6IEZsci5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNnYjogU2diLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHNnYjogU2diLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgeGRjOiBYZGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0eGRjOiBYZGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB3ZW1peDogV2VtaXguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0d2VtaXg6IFdlbWl4LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgbWFudHJhOiBNYW50cmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0bWFudHJhOiBNYW50cmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBtb246IE1vbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRtb246IE1vbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHdvcmxkOiBXb3JsZC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR3b3JsZDogV29ybGQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNvbmVpdW06IFNvbmVpdW0uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c29uZWl1bTogU29uZWl1bS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHBvbHl4OiBQb2x5eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cG9seXg6IFBvbHl4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHZldDogVmV0LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR2ZXQ6IFZldC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxufTtcblxuY29uc3QgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcCA9IHtcbiAgZXRoOiBFdGguTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBodGV0aDogRXRoLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbn07XG5cbmNvaW5zXG4gIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0VWTV9TREspKVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIGNvaW5CdWlsZGVyTWFwW2NvaW4ubmFtZV0gPSBFdm1Db2luLlRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgfSk7XG5cbi8qKlxuICogR2V0IHRoZSBsaXN0IG9mIGNvaW4gdGlja2VycyBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ29pbnMgPSBPYmplY3Qua2V5cyhjb2luQnVpbGRlck1hcCk7XG5cbi8qKlxuICogR2V0IGEgdHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgdGhlIGdpdmVuIGNvaW4uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIE9uZSBvZiB0aGUge0Bjb2RlIHN1cHBvcnRlZENvaW5zfVxuICogQHJldHVybnMge2FueX0gQW4gaW5zdGFuY2Ugb2YgYSB7QGNvZGUgVHJhbnNhY3Rpb25CdWlsZGVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVpbGRlcihjb2luTmFtZTogc3RyaW5nKTogQmFzZUJ1aWxkZXIge1xuICBjb25zdCBidWlsZGVyQ2xhc3MgPSBjb2luQnVpbGRlck1hcFtjb2luTmFtZV07XG4gIGlmICghYnVpbGRlckNsYXNzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgQ29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICByZXR1cm4gbmV3IGJ1aWxkZXJDbGFzcyhjb2lucy5nZXQoY29pbk5hbWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luTmFtZTogc3RyaW5nKTogQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzID0gY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV07XG4gIGlmICghbWVzc2FnZUJ1aWxkZXJGYWN0b3J5Q2xhc3MpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRNZXNzYWdlRXJyb3IoYE1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGZvciBjb2luICR7Y29pbk5hbWV9IG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxuICByZXR1cm4gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzKGNvaW5zLmdldChjb2luTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgbmV3IGNvaW4gaW5zdGFuY2Ugd2l0aCBpdHMgYnVpbGRlciBmYWN0b3J5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIGNvaW4gbmFtZSBhcyBpdCB3YXMgcmVnaXN0ZXJlZCBpbiBAYml0Z28vc3RhdGljc1xuICogQHBhcmFtIHthbnl9IGJ1aWxkZXJGYWN0b3J5IHRoZSBidWlsZGVyIGZhY3RvcnkgY2xhc3MgZm9yIHRoYXQgY29pblxuICogQHJldHVybnMge2FueX0gdGhlIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyPFQgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeT4oXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIGJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IGJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAvLyBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBmYWN0b3J5O1xuICBjb2luQnVpbGRlck1hcFtjb2luTmFtZV0gPSBidWlsZGVyRmFjdG9yeTsgLy8gRm9yIG5vdyByZWdpc3RlciB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24gdW50aWwgcmVpbXBsZW1lbnQgZ2V0QnVpbGRlciBtZXRob2RcbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBuZXcgY29pbiBpbnN0YW5jZSB3aXRoIGl0cyBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgY29pbiBuYW1lIGFzIGl0IHdhcyByZWdpc3RlcmVkIGluIEBiaXRnby9zdGF0aWNzXG4gKiBAcGFyYW0ge2FueX0gbWVzc2FnZUJ1aWxkZXJGYWN0b3J5IHRoZSBtZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBjbGFzcyBmb3IgdGhhdCBjb2luXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgbWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgaW5zdGFuY2UgZm9yIHRoZSByZWdpc3RlcmVkIGNvaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PFQgZXh0ZW5kcyBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5PihcbiAgY29pbk5hbWU6IHN0cmluZyxcbiAgbWVzc2FnZUJ1aWxkZXJGYWN0b3J5OiB7IG5ldyAoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KTogVCB9LFxuKTogVCB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoY29pbk5hbWUpO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcFtjb2luTmFtZV0gPSBtZXNzYWdlQnVpbGRlckZhY3Rvcnk7XG4gIHJldHVybiBmYWN0b3J5O1xufVxuIl19
|
|
353
|
+
/**
|
|
354
|
+
* Verify a message against the given encoded payload.
|
|
355
|
+
*
|
|
356
|
+
* @param {string} coinName - The name of the coin.
|
|
357
|
+
* @param {string} messageRaw - The raw message to verify.
|
|
358
|
+
* @param {string} messageEncoded - The encoded message to verify against.
|
|
359
|
+
* @param {MessageStandardType} messageStandardType - The type of message standard.
|
|
360
|
+
* @param {Record<string, unknown>} [metadata] - Optional metadata for verification.
|
|
361
|
+
* @returns {Promise<boolean>} - Returns true if the verification is successful, false otherwise.
|
|
362
|
+
*/
|
|
363
|
+
async function verifyMessage(coinName, messageRaw, messageEncoded, messageStandardType, metadata) {
|
|
364
|
+
try {
|
|
365
|
+
const messageBuilderFactory = getMessageBuilderFactory(coinName);
|
|
366
|
+
const messageBuilder = messageBuilderFactory.getMessageBuilder(messageStandardType);
|
|
367
|
+
messageBuilder.setPayload(messageRaw);
|
|
368
|
+
const message = await messageBuilder.build();
|
|
369
|
+
const isValidMessageEncoded = await message.verifyEncodedPayload(messageEncoded, metadata);
|
|
370
|
+
if (!isValidMessageEncoded) {
|
|
371
|
+
return false;
|
|
372
|
+
}
|
|
373
|
+
return (0, utils_1.validateAgainstMessageTemplates)(messageRaw);
|
|
374
|
+
}
|
|
375
|
+
catch (e) {
|
|
376
|
+
console.error(`Error verifying message for coin ${coinName}:`, e);
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJWQSxnQ0FPQztBQUVELDREQU1DO0FBU0QsNEJBU0M7QUFTRCxzRUFRQztBQVlELHNDQXFCQztBQTlhRCw4Q0FZeUI7QUFVaEIsa0dBbEJQLDRCQUFpQixPQWtCTztBQVJqQiw2RkFUUCx1QkFBWSxPQVNPO0FBQUUsc0ZBUnJCLGdCQUFLLE9BUXFCO0FBRDVCLDRDQUE0RTtBQUc1RTs7O0dBR0c7QUFDVSxRQUFBLE1BQU0sR0FBRywwQkFBZSxDQUFDO0FBSXRDOzs7R0FHRztBQUNVLFFBQUEsUUFBUSxHQUFHLDZCQUFrQixDQUFDO0FBRTNDLFFBQVE7QUFDUix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixzREFBb0Q7QUFDM0Msb0ZBRFUscUJBQUcsT0FDVjtBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QyxzQkFBSztBQUVkLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHdEQUF1RDtBQUM5QyxxRkFEVyx1QkFBSSxPQUNYO0FBRWIsc0RBQW9EO0FBQzNDLG9GQURVLHFCQUFHLE9BQ1Y7QUFFWix3REFBdUQ7QUFDOUMscUZBRFcsdUJBQUksT0FDWDtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDBEQUEwRDtBQUNqRCxzRkFEWSx5QkFBSyxPQUNaO0FBRWQseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosMkRBQTZDO0FBQ3BDLG9CQUFJO0FBRWIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVoscUVBQXVEO0FBQzlDLDhCQUFTO0FBRWxCLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLCtEQUFpRDtBQUN4Qyx3QkFBTTtBQUVmLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDJEQUE2QztBQUNwQyxvQkFBSTtBQUViLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLGlFQUFtRDtBQUMxQywwQkFBTztBQUVoQiw2REFBK0M7QUFDdEMsc0JBQUs7QUFFZCw2REFBK0M7QUFDdEMsc0JBQUs7QUFFZCx5REFBMkM7QUFDbEMsa0JBQUc7QUFFWix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWiw2REFBK0M7QUFDdEMsc0JBQUs7QUFFZCx5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixpRUFBbUQ7QUFDMUMsMEJBQU87QUFFaEIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosbUVBQXFEO0FBQzVDLDRCQUFRO0FBRWpCLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLHlEQUEyQztBQUNsQyxrQkFBRztBQUVaLDZEQUErQztBQUN0QywwQkFBTztBQUVoQix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWix5REFBMkM7QUFDbEMsa0JBQUc7QUFFWiw2REFBK0M7QUFDdEMsc0JBQUs7QUFFZCw2REFBK0M7QUFDdEMsc0JBQUs7QUFFZCx5REFBMkM7QUFDbEMsa0JBQUc7QUFFWixpRUFBbUQ7QUFDMUMsMEJBQU87QUFFaEIseURBQTJDO0FBQ2xDLGtCQUFHO0FBRVosbUNBQTBEO0FBRTFELE1BQU0sY0FBYyxHQUFHO0lBQ3JCLEdBQUcsRUFBRSxHQUFHLENBQUMsY0FBYztJQUN2QixJQUFJLEVBQUUsR0FBRyxDQUFDLGNBQWM7SUFDeEIsR0FBRyxFQUFFLHFCQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxxQkFBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtJQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtJQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtJQUNoQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUMzQixJQUFJLEVBQUUsR0FBRyxDQUFDLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUseUJBQUssQ0FBQyx5QkFBeUI7SUFDdEMsTUFBTSxFQUFFLHlCQUFLLENBQUMseUJBQXlCO0lBQ3ZDLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLElBQUksRUFBRSx1QkFBSSxDQUFDLHlCQUF5QjtJQUNwQyxLQUFLLEVBQUUsdUJBQUksQ0FBQyx5QkFBeUI7SUFDckMsR0FBRyxFQUFFLHFCQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxxQkFBRyxDQUFDLHlCQUF5QjtJQUNuQyxJQUFJLEVBQUUsdUJBQUksQ0FBQyx5QkFBeUI7SUFDcEMsS0FBSyxFQUFFLHVCQUFJLENBQUMseUJBQXlCO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLE9BQU8sRUFBRSxPQUFPLENBQUMsa0JBQWtCO0lBQ25DLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCO0lBQ3BDLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLFNBQVMsRUFBRSxTQUFTLENBQUMseUJBQXlCO0lBQzlDLFVBQVUsRUFBRSxTQUFTLENBQUMseUJBQXlCO0lBQy9DLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLE1BQU0sRUFBRSxNQUFNLENBQUMseUJBQXlCO0lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMseUJBQXlCO0lBQ3pDLE1BQU0sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2xDLEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQ2hDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO0lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCO0lBQzlCLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMseUJBQXlCO0lBQ3JDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLE9BQU8sRUFBRSxPQUFPLENBQUMsa0JBQWtCO0lBQ25DLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCO0lBQ3BDLFFBQVEsRUFBRSxRQUFRLENBQUMsa0JBQWtCO0lBQ3JDLFNBQVMsRUFBRSxRQUFRLENBQUMsa0JBQWtCO0lBQ3RDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEdBQUcsRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ2xDLElBQUksRUFBRSxHQUFHLENBQUMseUJBQXlCO0lBQ25DLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCO0lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCO0lBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2xDLE1BQU0sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2xDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQ2hDLE1BQU0sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2pDLE9BQU8sRUFBRSxNQUFNLENBQUMsa0JBQWtCO0lBQ2xDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsa0JBQWtCO0lBQ2hDLEdBQUcsRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzNCLElBQUksRUFBRSxHQUFHLENBQUMsa0JBQWtCO0lBQzVCLE9BQU8sRUFBRSxPQUFPLENBQUMsa0JBQWtCO0lBQ25DLFFBQVEsRUFB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LFFBQWtDO0lBRWxDLElBQUksQ0FBQztRQUNILE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRixjQUFjLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdDLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxPQUFPLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBQSx1Q0FBK0IsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgRWQyNTUxOUtleURlcml2ZXIsXG4gIEVkMjU1MTlCSVAzMixcbiAgRWRkc2EsXG4gIGFjY291bnRMaWJCYXNlQ29pbixcbiAgYWNvdW50TGliQ3J5cHRvLFxuICBCYXNlTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBCdWlsZE1lc3NhZ2VFcnJvcixcbiAgTWVzc2FnZVN0YW5kYXJkVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcsIENvaW5GZWF0dXJlLCBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IEVkMjU1MTlCSVAzMiwgRWRkc2EgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IGNyeXB0byA9IGFjb3VudExpYkNyeXB0bztcblxuZXhwb3J0IHsgRWQyNTUxOUtleURlcml2ZXIgfTtcblxuLyoqXG4gKiBEZXByZWNhdGVkIGFmdGVyIHZlcnNpb24gMi4xOS4wXG4gKiBSZXRhaW5lZCBmb3Igc2hvcnQgdGVybSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAtIG1pZ3JhdGUgdG86IEBiaXRnby9zZGstYXBpIGFuZCBAYml0Z28vc2RrLWNvcmVcbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb2luID0gYWNjb3VudExpYkJhc2VDb2luO1xuXG4vLyBjb2luc1xuaW1wb3J0ICogYXMgVHJ4IGZyb20gJ0BiaXRnby9zZGstY29pbi10cngnO1xuZXhwb3J0IHsgVHJ4IH07XG5cbmltcG9ydCB7IFh0ekxpYiBhcyBYdHogfSBmcm9tICdAYml0Z28vc2RrLWNvaW4teHR6JztcbmV4cG9ydCB7IFh0eiB9O1xuXG5pbXBvcnQgKiBhcyBFdGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV0aCc7XG5leHBvcnQgeyBFdGggfTtcblxuaW1wb3J0ICogYXMgRXRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ldGMnO1xuZXhwb3J0IHsgRXRjIH07XG5cbmltcG9ydCAqIGFzIEF2YXhDIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdmF4Yyc7XG5leHBvcnQgeyBBdmF4QyB9O1xuXG5pbXBvcnQgKiBhcyBSYnRjIGZyb20gJ0BiaXRnby9zZGstY29pbi1yYnRjJztcbmV4cG9ydCB7IFJidGMgfTtcblxuaW1wb3J0ICogYXMgQ2VsbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY2Vsbyc7XG5leHBvcnQgeyBDZWxvIH07XG5cbmltcG9ydCAqIGFzIEhiYXIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuZXhwb3J0IHsgSGJhciB9O1xuXG5pbXBvcnQgeyBDc3ByTGliIGFzIENzcHIgfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tY3Nwcic7XG5leHBvcnQgeyBDc3ByIH07XG5cbmltcG9ydCB7IFN0eExpYiBhcyBTdHggfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R4JztcbmV4cG9ydCB7IFN0eCB9O1xuXG5pbXBvcnQgeyBBbGdvTGliIGFzIEFsZ28gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWxnbyc7XG5leHBvcnQgeyBBbGdvIH07XG5cbmltcG9ydCAqIGFzIEFyYmV0aCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXJiZXRoJztcbmV4cG9ydCB7IEFyYmV0aCB9O1xuXG5pbXBvcnQgKiBhcyBBdG9tIGZyb20gJ0BiaXRnby9zZGstY29pbi1hdG9tJztcbmV4cG9ydCB7IEF0b20gfTtcblxuaW1wb3J0ICogYXMgT3NtbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tb3Ntbyc7XG5leHBvcnQgeyBPc21vIH07XG5cbmltcG9ydCB7IEF2YXhwTGliIGFzIEF2YXhQIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWF2YXhwJztcbmV4cG9ydCB7IEF2YXhQIH07XG5cbmltcG9ydCAqIGFzIFRpYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tdGlhJztcbmV4cG9ydCB7IFRpYSB9O1xuXG5pbXBvcnQgKiBhcyBCZXJhIGZyb20gJ0BiaXRnby9zZGstY29pbi1iZXJhJztcbmV4cG9ydCB7IEJlcmEgfTtcblxuaW1wb3J0ICogYXMgQmxkIGZyb20gJ0BiaXRnby9zZGstY29pbi1ibGQnO1xuZXhwb3J0IHsgQmxkIH07XG5cbmltcG9ydCAqIGFzIEhhc2ggZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhhc2gnO1xuZXhwb3J0IHsgSGFzaCB9O1xuXG5pbXBvcnQgKiBhcyBTZWkgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNlaSc7XG5leHBvcnQgeyBTZWkgfTtcblxuaW1wb3J0ICogYXMgSW5qZWN0aXZlIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbmplY3RpdmUnO1xuZXhwb3J0IHsgSW5qZWN0aXZlIH07XG5cbmltcG9ydCAqIGFzIElzbG0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWlzbG0nO1xuZXhwb3J0IHsgSXNsbSB9O1xuXG5pbXBvcnQgKiBhcyBaZXRhIGZyb20gJ0BiaXRnby9zZGstY29pbi16ZXRhJztcbmV4cG9ydCB7IFpldGEgfTtcblxuaW1wb3J0ICogYXMgQ29yZXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1jb3JldW0nO1xuZXhwb3J0IHsgQ29yZXVtIH07XG5cbmltcG9ydCAqIGFzIFJ1bmUgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXJ1bmUnO1xuZXhwb3J0IHsgUnVuZSB9O1xuXG5pbXBvcnQgKiBhcyBCYWJ5IGZyb20gJ0BiaXRnby9zZGstY29pbi1iYWJ5JztcbmV4cG9ydCB7IEJhYnkgfTtcblxuaW1wb3J0ICogYXMgTW9uIGZyb20gJ0BiaXRnby9zZGstY29pbi1tb24nO1xuZXhwb3J0IHsgTW9uIH07XG5cbmltcG9ydCAqIGFzIE1hbnRyYSBmcm9tICdAYml0Z28vc2RrLWNvaW4tbWFudHJhJztcbmV4cG9ydCB7IE1hbnRyYSB9O1xuXG5pbXBvcnQgKiBhcyBDcm9ub3MgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWNyb25vcyc7XG5leHBvcnQgeyBDcm9ub3MgfTtcblxuaW1wb3J0ICogYXMgSW5pdGlhIGZyb20gJ0BiaXRnby9zZGstY29pbi1pbml0aWEnO1xuZXhwb3J0IHsgSW5pdGlhIH07XG5cbmltcG9ydCAqIGFzIEFzaSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXNpJztcbmV4cG9ydCB7IEFzaSB9O1xuXG5pbXBvcnQgKiBhcyBTb2wgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXNvbCc7XG5leHBvcnQgeyBTb2wgfTtcblxuaW1wb3J0ICogYXMgQWRhIGZyb20gJ0BiaXRnby9zZGstY29pbi1hZGEnO1xuZXhwb3J0IHsgQWRhIH07XG5cbmltcG9ydCAqIGFzIERvdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tZG90JztcbmV4cG9ydCB7IERvdCB9O1xuXG5pbXBvcnQgKiBhcyBOZWFyIGZyb20gJ0BiaXRnby9zZGstY29pbi1uZWFyJztcbmV4cG9ydCB7IE5lYXIgfTtcblxuaW1wb3J0ICogYXMgQnNjIGZyb20gJ0BiaXRnby9zZGstY29pbi1ic2MnO1xuZXhwb3J0IHsgQnNjIH07XG5cbmltcG9ydCAqIGFzIFBvbHlnb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXBvbHlnb24nO1xuZXhwb3J0IHsgUG9seWdvbiB9O1xuXG5pbXBvcnQgKiBhcyBQb2x5eCBmcm9tICdAYml0Z28vc2RrLWNvaW4tcG9seXgnO1xuZXhwb3J0IHsgUG9seXggfTtcblxuaW1wb3J0ICogYXMgT3BldGggZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9wZXRoJztcbmV4cG9ydCB7IE9wZXRoIH07XG5cbmltcG9ydCAqIGFzIFN1aSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3VpJztcbmV4cG9ydCB7IFN1aSB9O1xuXG5pbXBvcnQgKiBhcyBUb24gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRvbic7XG5leHBvcnQgeyBUb24gfTtcblxuaW1wb3J0ICogYXMgWFJQIGZyb20gJ0BiaXRnby9zZGstY29pbi14cnAnO1xuZXhwb3J0IHsgWFJQIH07XG5cbmltcG9ydCAqIGFzIHprRXRoIGZyb20gJ0BiaXRnby9zZGstY29pbi16a2V0aCc7XG5leHBvcnQgeyB6a0V0aCB9O1xuXG5pbXBvcnQgKiBhcyBPYXMgZnJvbSAnQGJpdGdvL3Nkay1jb2luLW9hcyc7XG5leHBvcnQgeyBPYXMgfTtcblxuaW1wb3J0ICogYXMgQ29yZWRhbyBmcm9tICdAYml0Z28vc2RrLWNvaW4tY29yZWRhbyc7XG5leHBvcnQgeyBDb3JlZGFvIH07XG5cbmltcG9ydCAqIGFzIEFwdCBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXB0JztcbmV4cG9ydCB7IEFwdCB9O1xuXG5pbXBvcnQgKiBhcyBBcGVjaGFpbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tYXBlY2hhaW4nO1xuZXhwb3J0IHsgQXBlY2hhaW4gfTtcblxuaW1wb3J0ICogYXMgVGFvIGZyb20gJ0BiaXRnby9zZGstY29pbi10YW8nO1xuZXhwb3J0IHsgVGFvIH07XG5cbmltcG9ydCAqIGFzIEljcCBmcm9tICdAYml0Z28vc2RrLWNvaW4taWNwJztcbmV4cG9ydCB7IEljcCB9O1xuXG5pbXBvcnQgKiBhcyBGbHIgZnJvbSAnQGJpdGdvL3Nkay1jb2luLWZscic7XG5leHBvcnQgeyBGbHIgfTtcblxuaW1wb3J0ICogYXMgRXZtQ29pbiBmcm9tICdAYml0Z28vc2RrLWNvaW4tZXZtJztcbmV4cG9ydCB7IEV2bUNvaW4gfTtcblxuaW1wb3J0ICogYXMgU2diIGZyb20gJ0BiaXRnby9zZGstY29pbi1zZ2InO1xuZXhwb3J0IHsgU2diIH07XG5cbmltcG9ydCAqIGFzIFhkYyBmcm9tICdAYml0Z28vc2RrLWNvaW4teGRjJztcbmV4cG9ydCB7IFhkYyB9O1xuXG5pbXBvcnQgKiBhcyBXZW1peCBmcm9tICdAYml0Z28vc2RrLWNvaW4td2VtaXgnO1xuZXhwb3J0IHsgV2VtaXggfTtcblxuaW1wb3J0ICogYXMgV29ybGQgZnJvbSAnQGJpdGdvL3Nkay1jb2luLXdvcmxkJztcbmV4cG9ydCB7IFdvcmxkIH07XG5cbmltcG9ydCAqIGFzIFN0dCBmcm9tICdAYml0Z28vc2RrLWNvaW4tc3R0JztcbmV4cG9ydCB7IFN0dCB9O1xuXG5pbXBvcnQgKiBhcyBTb25laXVtIGZyb20gJ0BiaXRnby9zZGstY29pbi1zb25laXVtJztcbmV4cG9ydCB7IFNvbmVpdW0gfTtcblxuaW1wb3J0ICogYXMgVmV0IGZyb20gJ0BiaXRnby9zZGstY29pbi12ZXQnO1xuZXhwb3J0IHsgVmV0IH07XG5cbmltcG9ydCB7IHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgY29pbkJ1aWxkZXJNYXAgPSB7XG4gIHRyeDogVHJ4LldyYXBwZWRCdWlsZGVyLFxuICB0dHJ4OiBUcnguV3JhcHBlZEJ1aWxkZXIsXG4gIHh0ejogWHR6LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHh0ejogWHR6LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgZXRjOiBFdGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0ZXRjOiBFdGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRldGg6IEV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGd0ZXRoOiBFdGguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBodGV0aDogRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgcmJ0YzogUmJ0Yy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRyYnRjOiBSYnRjLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgY2VsbzogQ2Vsby5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRjZWxvOiBDZWxvLlRlc3RuZXRUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGF2YXhjOiBBdmF4Qy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRhdmF4YzogQXZheEMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBic2M6IEJzYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRic2M6IEJzYy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGF2YXhwOiBBdmF4UC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YXZheHA6IEF2YXhQLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGhiYXI6IEhiYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGhiYXI6IEhiYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgY3NwcjogQ3Nwci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0Y3NwcjogQ3Nwci5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzdHg6IFN0eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c3R4OiBTdHguVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYWxnbzogQWxnby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0YWxnbzogQWxnby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBzb2w6IFNvbC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0c29sOiBTb2wuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgZG90OiBEb3QuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGRvdDogRG90LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIG5lYXI6IE5lYXIuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgcG9seWdvbjogUG9seWdvbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRwb2x5Z29uOiBQb2x5Z29uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgc3VpOiBTdWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHN1aTogU3VpLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRpYTogVGlhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR0aWE6IFRpYS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBhdG9tOiBBdG9tLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRhdG9tOiBBdG9tLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIG9zbW86IE9zbW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdG9zbW86IE9zbW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgYmxkOiBCbGQuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGJsZDogQmxkLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGhhc2g6IEhhc2guVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGhhc2g6IEhhc2guVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgc2VpOiBTZWkuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHNlaTogU2VpLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGluamVjdGl2ZTogSW5qZWN0aXZlLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHRpbmplY3RpdmU6IEluamVjdGl2ZS5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB6ZXRhOiBaZXRhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR6ZXRhOiBaZXRhLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGlzbG06IElzbG0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGlzbG06IElzbG0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgY29yZXVtOiBDb3JldW0uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdGNvcmV1bTogQ29yZXVtLlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIGFyYmV0aDogQXJiZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGFyYmV0aDogQXJiZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgb3BldGg6IE9wZXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9wZXRoOiBPcGV0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRvbjogVG9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHRvbjogVG9uLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgemtldGg6IHprRXRoLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHprZXRoOiB6a0V0aC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGJlcmE6IEJlcmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YmVyYTogQmVyYS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHJ1bmU6IFJ1bmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgdHJ1bmU6IFJ1bmUuVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgb2FzOiBPYXMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0b2FzOiBPYXMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjb3JlZGFvOiBDb3JlZGFvLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGNvcmVkYW86IENvcmVkYW8uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBhcGVjaGFpbjogQXBlY2hhaW4uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXBlY2hhaW46IEFwZWNoYWluLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXB0OiBBcHQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXB0OiBBcHQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YW86IFRhby5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0dGFvOiBUYW8uVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgaWNwOiBJY3AuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0aWNwOiBJY3AuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBiYWJ5OiBCYWJ5LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGJhYnk6IEJhYnkuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBjcm9ub3M6IENyb25vcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRjcm9ub3M6IENyb25vcy5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIGluaXRpYTogSW5pdGlhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdGluaXRpYTogSW5pdGlhLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgYXNpOiBBc2kuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0YXNpOiBBc2kuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBmbHI6IEZsci5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRmbHI6IEZsci5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNnYjogU2diLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdHNnYjogU2diLlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgeGRjOiBYZGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0eGRjOiBYZGMuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB3ZW1peDogV2VtaXguVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0d2VtaXg6IFdlbWl4LlRyYW5zYWN0aW9uQnVpbGRlcixcbiAgbWFudHJhOiBNYW50cmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0bWFudHJhOiBNYW50cmEuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBtb246IE1vbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRtb246IE1vbi5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHdvcmxkOiBXb3JsZC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHR3b3JsZDogV29ybGQuVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHRzdHQ6IFN0dC5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHNvbmVpdW06IFNvbmVpdW0uVHJhbnNhY3Rpb25CdWlsZGVyLFxuICB0c29uZWl1bTogU29uZWl1bS5UcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIHBvbHl4OiBQb2x5eC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICB0cG9seXg6IFBvbHl4LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHZldDogVmV0LlRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksXG4gIHR2ZXQ6IFZldC5UcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxufTtcblxuY29uc3QgY29pbk1lc3NhZ2VCdWlsZGVyRmFjdG9yeU1hcCA9IHtcbiAgZXRoOiBFdGguTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBodGV0aDogRXRoLk1lc3NhZ2VCdWlsZGVyRmFjdG9yeSxcbiAgYWRhOiBBZGEuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICB0YWRhOiBBZGEuTWVzc2FnZUJ1aWxkZXJGYWN0b3J5LFxuICBzb2w6IFNvbC5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG4gIHRzb2w6IFNvbC5NZXNzYWdlQnVpbGRlckZhY3RvcnksXG59O1xuXG5jb2luc1xuICAuZmlsdGVyKChjb2luKSA9PiBjb2luLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLKSlcbiAgLmZvckVhY2goKGNvaW4pID0+IHtcbiAgICBjb2luQnVpbGRlck1hcFtjb2luLm5hbWVdID0gRXZtQ29pbi5UcmFuc2FjdGlvbkJ1aWxkZXI7XG4gIH0pO1xuXG4vKipcbiAqIEdldCB0aGUgbGlzdCBvZiBjb2luIHRpY2tlcnMgc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZENvaW5zID0gT2JqZWN0LmtleXMoY29pbkJ1aWxkZXJNYXApO1xuXG4vKipcbiAqIEdldCBhIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZm9yIHRoZSBnaXZlbiBjb2luLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2luTmFtZSBPbmUgb2YgdGhlIHtAY29kZSBzdXBwb3J0ZWRDb2luc31cbiAqIEByZXR1cm5zIHthbnl9IEFuIGluc3RhbmNlIG9mIGEge0Bjb2RlIFRyYW5zYWN0aW9uQnVpbGRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1aWxkZXIoY29pbk5hbWU6IHN0cmluZyk6IEJhc2VCdWlsZGVyIHtcbiAgY29uc3QgYnVpbGRlckNsYXNzID0gY29pbkJ1aWxkZXJNYXBbY29pbk5hbWVdO1xuICBpZiAoIWJ1aWxkZXJDbGFzcykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYENvaW4gJHtjb2luTmFtZX0gbm90IHN1cHBvcnRlZGApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBidWlsZGVyQ2xhc3MoY29pbnMuZ2V0KGNvaW5OYW1lKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNZXNzYWdlQnVpbGRlckZhY3RvcnkoY29pbk5hbWU6IHN0cmluZyk6IEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdCBtZXNzYWdlQnVpbGRlckZhY3RvcnlDbGFzcyA9IGNvaW5NZXNzYWdlQnVpbGRlckZhY3RvcnlNYXBbY29pbk5hbWVdO1xuICBpZiAoIW1lc3NhZ2VCdWlsZGVyRmFjdG9yeUNsYXNzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkTWVzc2FnZUVycm9yKGBNZXNzYWdlIGJ1aWxkZXIgZmFjdG9yeSBmb3IgY29pbiAke2NvaW5OYW1lfSBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBtZXNzYWdlQnVpbGRlckZhY3RvcnlDbGFzcyhjb2lucy5nZXQoY29pbk5hbWUpKTtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIG5ldyBjb2luIGluc3RhbmNlIHdpdGggaXRzIGJ1aWxkZXIgZmFjdG9yeVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2luTmFtZSBjb2luIG5hbWUgYXMgaXQgd2FzIHJlZ2lzdGVyZWQgaW4gQGJpdGdvL3N0YXRpY3NcbiAqIEBwYXJhbSB7YW55fSBidWlsZGVyRmFjdG9yeSB0aGUgYnVpbGRlciBmYWN0b3J5IGNsYXNzIGZvciB0aGF0IGNvaW5cbiAqIEByZXR1cm5zIHthbnl9IHRoZSBmYWN0b3J5IGluc3RhbmNlIGZvciB0aGUgcmVnaXN0ZXJlZCBjb2luXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlcjxUIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnk+KFxuICBjb2luTmFtZTogc3RyaW5nLFxuICBidWlsZGVyRmFjdG9yeTogeyBuZXcgKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IFQgfSxcbik6IFQge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KGNvaW5OYW1lKTtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBidWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgLy8gY29pbkJ1aWxkZXJNYXBbY29pbk5hbWVdID0gZmFjdG9yeTtcbiAgY29pbkJ1aWxkZXJNYXBbY29pbk5hbWVdID0gYnVpbGRlckZhY3Rvcnk7IC8vIEZvciBub3cgcmVnaXN0ZXIgdGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uIHVudGlsIHJlaW1wbGVtZW50IGdldEJ1aWxkZXIgbWV0aG9kXG4gIHJldHVybiBmYWN0b3J5O1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgbmV3IGNvaW4gaW5zdGFuY2Ugd2l0aCBpdHMgbWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvaW5OYW1lIGNvaW4gbmFtZSBhcyBpdCB3YXMgcmVnaXN0ZXJlZCBpbiBAYml0Z28vc3RhdGljc1xuICogQHBhcmFtIHthbnl9IG1lc3NhZ2VCdWlsZGVyRmFjdG9yeSB0aGUgbWVzc2FnZSBidWlsZGVyIGZhY3RvcnkgY2xhc3MgZm9yIHRoYXQgY29pblxuICogQHJldHVybnMge2FueX0gdGhlIG1lc3NhZ2UgYnVpbGRlciBmYWN0b3J5IGluc3RhbmNlIGZvciB0aGUgcmVnaXN0ZXJlZCBjb2luXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1lc3NhZ2VCdWlsZGVyRmFjdG9yeTxUIGV4dGVuZHMgQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeT4oXG4gIGNvaW5OYW1lOiBzdHJpbmcsXG4gIG1lc3NhZ2VCdWlsZGVyRmFjdG9yeTogeyBuZXcgKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPik6IFQgfSxcbik6IFQge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KGNvaW5OYW1lKTtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBtZXNzYWdlQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gIGNvaW5NZXNzYWdlQnVpbGRlckZhY3RvcnlNYXBbY29pbk5hbWVdID0gbWVzc2FnZUJ1aWxkZXJGYWN0b3J5O1xuICByZXR1cm4gZmFjdG9yeTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBtZXNzYWdlIGFnYWluc3QgdGhlIGdpdmVuIGVuY29kZWQgcGF5bG9hZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29pbk5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY29pbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlUmF3IC0gVGhlIHJhdyBtZXNzYWdlIHRvIHZlcmlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlRW5jb2RlZCAtIFRoZSBlbmNvZGVkIG1lc3NhZ2UgdG8gdmVyaWZ5IGFnYWluc3QuXG4gKiBAcGFyYW0ge01lc3NhZ2VTdGFuZGFyZFR5cGV9IG1lc3NhZ2VTdGFuZGFyZFR5cGUgLSBUaGUgdHlwZSBvZiBtZXNzYWdlIHN0YW5kYXJkLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW21ldGFkYXRhXSAtIE9wdGlvbmFsIG1ldGFkYXRhIGZvciB2ZXJpZmljYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIHZlcmlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlNZXNzYWdlKFxuICBjb2luTmFtZTogc3RyaW5nLFxuICBtZXNzYWdlUmF3OiBzdHJpbmcsXG4gIG1lc3NhZ2VFbmNvZGVkOiBzdHJpbmcsXG4gIG1lc3NhZ2VTdGFuZGFyZFR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUsXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtZXNzYWdlQnVpbGRlckZhY3RvcnkgPSBnZXRNZXNzYWdlQnVpbGRlckZhY3RvcnkoY29pbk5hbWUpO1xuICAgIGNvbnN0IG1lc3NhZ2VCdWlsZGVyID0gbWVzc2FnZUJ1aWxkZXJGYWN0b3J5LmdldE1lc3NhZ2VCdWlsZGVyKG1lc3NhZ2VTdGFuZGFyZFR5cGUpO1xuICAgIG1lc3NhZ2VCdWlsZGVyLnNldFBheWxvYWQobWVzc2FnZVJhdyk7XG4gICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IG1lc3NhZ2VCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgaXNWYWxpZE1lc3NhZ2VFbmNvZGVkID0gYXdhaXQgbWVzc2FnZS52ZXJpZnlFbmNvZGVkUGF5bG9hZChtZXNzYWdlRW5jb2RlZCwgbWV0YWRhdGEpO1xuICAgIGlmICghaXNWYWxpZE1lc3NhZ2VFbmNvZGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0ZUFnYWluc3RNZXNzYWdlVGVtcGxhdGVzKG1lc3NhZ2VSYXcpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3IgdmVyaWZ5aW5nIG1lc3NhZ2UgZm9yIGNvaW4gJHtjb2luTmFtZX06YCwgZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAG1D;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CASpD"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgB,MAAM,iBAAiB,CAAC;AAG1D;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CASpD;AAED,cAAc,YAAY,CAAC"}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -32,6 +32,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
39
|
exports.register = register;
|
|
37
40
|
const coinModules = __importStar(require(".."));
|
|
@@ -53,4 +56,5 @@ function register(coinName) {
|
|
|
53
56
|
}
|
|
54
57
|
throw new sdk_core_1.NotSupported(`${coinName} util factory not supported`);
|
|
55
58
|
}
|
|
56
|
-
|
|
59
|
+
__exportStar(require("./messages"), exports);
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSw0QkFTQztBQW5CRCxnREFBa0M7QUFDbEMsOENBQTBEO0FBQzFELDRDQUF1QztBQUV2Qzs7Ozs7R0FLRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxNQUFNLGlCQUFpQixHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNuQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLElBQUksdUJBQVksQ0FBQyxHQUFHLFFBQVEsNkJBQTZCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsNkNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29pbk1vZHVsZXMgZnJvbSAnLi4nO1xuaW1wb3J0IHsgQmFzZVV0aWxzLCBOb3RTdXBwb3J0ZWQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhlIGZhY3RvcnkgbWV0aG9kIGZvciBjb2luIHV0aWxzIG1ldGhvZHNcbiAqIHRocm93IGlmIGNvaW4gbm90IHN1cHBvcnRlZFxuICogQHBhcmFtIHtTdHJpbmd9IGNvaW5OYW1lXG4gKiBAcmV0dXJucyB7QmFzZVV0aWxzfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIoY29pbk5hbWU6IHN0cmluZyk6IEJhc2VVdGlscyB7XG4gIGNvbnN0IHNhbml0aXplZENvaW5OYW1lID0gY29pbnMuZ2V0KGNvaW5OYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpKS5mYW1pbHk7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGNvaW5Nb2R1bGVzKVxuICAgIC5maWx0ZXIoKGspID0+IGNvaW5Nb2R1bGVzW2tdLlV0aWxzKVxuICAgIC5maW5kKChrKSA9PiBrLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBzYW5pdGl6ZWRDb2luTmFtZSk7XG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4gbmV3IGNvaW5Nb2R1bGVzW2tleV0uVXRpbHMoKTtcbiAgfVxuICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKGAke2NvaW5OYW1lfSB1dGlsIGZhY3Rvcnkgbm90IHN1cHBvcnRlZGApO1xufVxuXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzJztcbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const MIDNIGHT_TNC_HASH = "6bf2adf825baa496729e2eac1e895ebc77973744bce67f44276bf6006f5c21de863ed121e11828d8fc0241773191e26dc1134803a681a9a98ba0ae812553db24";
|
|
2
|
+
/**
|
|
3
|
+
* Validates a message against a set of whitelisted templates.
|
|
4
|
+
* The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} messageRaw - The raw message to validate.
|
|
7
|
+
* @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateAgainstMessageTemplates(messageRaw: string): boolean;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,qIACsG,CAAC;AAerI;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAK3E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MIDNIGHT_TNC_HASH = void 0;
|
|
4
|
+
exports.validateAgainstMessageTemplates = validateAgainstMessageTemplates;
|
|
5
|
+
exports.MIDNIGHT_TNC_HASH = '6bf2adf825baa496729e2eac1e895ebc77973744bce67f44276bf6006f5c21de863ed121e11828d8fc0241773191e26dc1134803a681a9a98ba0ae812553db24';
|
|
6
|
+
/*
|
|
7
|
+
* matches a message that starts with "STAR ", followed by a number,
|
|
8
|
+
* then " to addr" or " to addr_test1", followed by a 50+ character alphanumeric address,
|
|
9
|
+
* and ends with the midnight TnC hash
|
|
10
|
+
*/
|
|
11
|
+
const MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE = `STAR \\d+ to addr(?:1|_test1)[a-z0-9]{50,} ${exports.MIDNIGHT_TNC_HASH}`;
|
|
12
|
+
/**
|
|
13
|
+
* @file Utility functions for validating messages against whitelisted templates.
|
|
14
|
+
* This is used to ensure that only specific message formats are accepted.
|
|
15
|
+
*/
|
|
16
|
+
const whitelistedMessageTemplates = [MIDNIGHT_GLACIER_DROP_CLAIM_MESSAGE_TEMPLATE];
|
|
17
|
+
/**
|
|
18
|
+
* Validates a message against a set of whitelisted templates.
|
|
19
|
+
* The templates can contain placeholders like {{variable}} which will be replaced with a wildcard in the regex.
|
|
20
|
+
*
|
|
21
|
+
* @param {string} messageRaw - The raw message to validate.
|
|
22
|
+
* @returns {boolean} - Returns true if the message matches any of the whitelisted templates, false otherwise.
|
|
23
|
+
*/
|
|
24
|
+
function validateAgainstMessageTemplates(messageRaw) {
|
|
25
|
+
return whitelistedMessageTemplates.some((template) => {
|
|
26
|
+
const regex = new RegExp(`^${template}$`, 's'); // 's' flag to match newlines
|
|
27
|
+
return regex.test(messageRaw);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvbWVzc2FnZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBdUJBLDBFQUtDO0FBNUJZLFFBQUEsaUJBQWlCLEdBQzVCLGtJQUFrSSxDQUFDO0FBRXJJOzs7O0dBSUc7QUFDSCxNQUFNLDRDQUE0QyxHQUFHLDhDQUE4Qyx5QkFBaUIsRUFBRSxDQUFDO0FBRXZIOzs7R0FHRztBQUNILE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBRW5GOzs7Ozs7R0FNRztBQUNILFNBQWdCLCtCQUErQixDQUFDLFVBQWtCO0lBQ2hFLE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxRQUFRLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtRQUM3RSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE1JRE5JR0hUX1ROQ19IQVNIID1cbiAgJzZiZjJhZGY4MjViYWE0OTY3MjllMmVhYzFlODk1ZWJjNzc5NzM3NDRiY2U2N2Y0NDI3NmJmNjAwNmY1YzIxZGU4NjNlZDEyMWUxMTgyOGQ4ZmMwMjQxNzczMTkxZTI2ZGMxMTM0ODAzYTY4MWE5YTk4YmEwYWU4MTI1NTNkYjI0JztcblxuLypcbiAqIG1hdGNoZXMgYSBtZXNzYWdlIHRoYXQgc3RhcnRzIHdpdGggXCJTVEFSIFwiLCBmb2xsb3dlZCBieSBhIG51bWJlcixcbiAqIHRoZW4gXCIgdG8gYWRkclwiIG9yIFwiIHRvIGFkZHJfdGVzdDFcIiwgZm9sbG93ZWQgYnkgYSA1MCsgY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBhZGRyZXNzLFxuICogYW5kIGVuZHMgd2l0aCB0aGUgbWlkbmlnaHQgVG5DIGhhc2hcbiAqL1xuY29uc3QgTUlETklHSFRfR0xBQ0lFUl9EUk9QX0NMQUlNX01FU1NBR0VfVEVNUExBVEUgPSBgU1RBUiBcXFxcZCsgdG8gYWRkcig/OjF8X3Rlc3QxKVthLXowLTldezUwLH0gJHtNSUROSUdIVF9UTkNfSEFTSH1gO1xuXG4vKipcbiAqIEBmaWxlIFV0aWxpdHkgZnVuY3Rpb25zIGZvciB2YWxpZGF0aW5nIG1lc3NhZ2VzIGFnYWluc3Qgd2hpdGVsaXN0ZWQgdGVtcGxhdGVzLlxuICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB0aGF0IG9ubHkgc3BlY2lmaWMgbWVzc2FnZSBmb3JtYXRzIGFyZSBhY2NlcHRlZC5cbiAqL1xuY29uc3Qgd2hpdGVsaXN0ZWRNZXNzYWdlVGVtcGxhdGVzID0gW01JRE5JR0hUX0dMQUNJRVJfRFJPUF9DTEFJTV9NRVNTQUdFX1RFTVBMQVRFXTtcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBtZXNzYWdlIGFnYWluc3QgYSBzZXQgb2Ygd2hpdGVsaXN0ZWQgdGVtcGxhdGVzLlxuICogVGhlIHRlbXBsYXRlcyBjYW4gY29udGFpbiBwbGFjZWhvbGRlcnMgbGlrZSB7e3ZhcmlhYmxlfX0gd2hpY2ggd2lsbCBiZSByZXBsYWNlZCB3aXRoIGEgd2lsZGNhcmQgaW4gdGhlIHJlZ2V4LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlUmF3IC0gVGhlIHJhdyBtZXNzYWdlIHRvIHZhbGlkYXRlLlxuICogQHJldHVybnMge2Jvb2xlYW59IC0gUmV0dXJucyB0cnVlIGlmIHRoZSBtZXNzYWdlIG1hdGNoZXMgYW55IG9mIHRoZSB3aGl0ZWxpc3RlZCB0ZW1wbGF0ZXMsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQWdhaW5zdE1lc3NhZ2VUZW1wbGF0ZXMobWVzc2FnZVJhdzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB3aGl0ZWxpc3RlZE1lc3NhZ2VUZW1wbGF0ZXMuc29tZSgodGVtcGxhdGUpID0+IHtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYF4ke3RlbXBsYXRlfSRgLCAncycpOyAvLyAncycgZmxhZyB0byBtYXRjaCBuZXdsaW5lc1xuICAgIHJldHVybiByZWdleC50ZXN0KG1lc3NhZ2VSYXcpO1xuICB9KTtcbn1cbiJdfQ==
|