@bitgo/sdk-coin-polyx 1.17.2 → 1.19.0
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/src/lib/batchStakingBuilder.d.ts.map +1 -1
- package/dist/src/lib/batchStakingBuilder.js +4 -1
- package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -1
- package/dist/src/lib/batchUnstakingBuilder.js +3 -1
- package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -1
- package/dist/src/lib/bondExtraBuilder.js +3 -1
- package/dist/src/lib/hexTokenTransferBuilder.d.ts +3 -0
- package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/hexTokenTransferBuilder.js +4 -1
- package/dist/src/lib/hexTransferBuilder.d.ts +2 -0
- package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/hexTransferBuilder.js +3 -1
- package/dist/src/lib/iface.d.ts +113 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +12 -1
- package/dist/src/lib/index.d.ts +14 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +28 -2
- package/dist/src/lib/nominateBuilder.d.ts.map +1 -1
- package/dist/src/lib/nominateBuilder.js +3 -1
- package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -1
- package/dist/src/lib/preApproveAssetBuilder.js +2 -2
- package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
- package/dist/src/lib/registerDidWithCDDBuilder.js +4 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts +7 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +16 -7
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +24 -6
- package/dist/src/lib/transactionBuilderFactory.d.ts +32 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +121 -5
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +3 -1
- package/dist/src/lib/txnSchema.d.ts +20 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -1
- package/dist/src/lib/txnSchema.js +81 -2
- package/dist/src/lib/unbondBuilder.d.ts.map +1 -1
- package/dist/src/lib/unbondBuilder.js +3 -1
- package/dist/src/lib/utils.d.ts +1 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +6 -1
- package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
- package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
- package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
- package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8BondExtraBuilder.js +21 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8HexTransferBuilder.js +21 -0
- package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
- package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8NominateBuilder.js +21 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
- package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
- package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
- package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
- package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
- package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8TransferBuilder.js +21 -0
- package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
- package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8UnbondBuilder.js +21 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
- package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
- package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -1
- package/dist/src/lib/withdrawUnbondedBuilder.js +3 -1
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.d.ts.map +1 -1
- package/dist/src/resources/index.js +3 -1
- package/dist/src/resources/mainnetV8.d.ts +13 -0
- package/dist/src/resources/mainnetV8.d.ts.map +1 -0
- package/dist/src/resources/mainnetV8.js +19 -0
- package/dist/src/resources/testnetV8.d.ts +13 -0
- package/dist/src/resources/testnetV8.d.ts.map +1 -0
- package/dist/src/resources/testnetV8.js +16 -0
- package/dist/test/resources/index.d.ts +28 -1
- package/dist/test/resources/index.d.ts.map +1 -1
- package/dist/test/resources/index.js +31 -2
- package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +30 -1
- package/dist/test/unit/transactionBuilder/nominateBuilder.js +58 -1
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +201 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -101,6 +101,33 @@ export declare const stakingTx: {
|
|
|
101
101
|
};
|
|
102
102
|
};
|
|
103
103
|
};
|
|
104
|
+
/** v8 testnet sandbox — block 24829135, stakeV8.cjs --batch */
|
|
105
|
+
export declare const stakingTxV8: {
|
|
106
|
+
sandbox: {
|
|
107
|
+
stash: string;
|
|
108
|
+
validator: string;
|
|
109
|
+
bondAmount: string;
|
|
110
|
+
payee: string;
|
|
111
|
+
specVersion: number;
|
|
112
|
+
transactionVersion: number;
|
|
113
|
+
blockHeight: number;
|
|
114
|
+
blockHash: string;
|
|
115
|
+
referenceBlock: string;
|
|
116
|
+
nonce: number;
|
|
117
|
+
firstValid: number;
|
|
118
|
+
bondedEvent: (string | number)[];
|
|
119
|
+
};
|
|
120
|
+
batch: {
|
|
121
|
+
bondAndNominate: {
|
|
122
|
+
callHex: string;
|
|
123
|
+
extrinsicPayloadHex: string;
|
|
124
|
+
payloadLength: number;
|
|
125
|
+
specVersionLE: string;
|
|
126
|
+
txVersionLE: string;
|
|
127
|
+
tailAfterRefBlock: string;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
};
|
|
104
131
|
export declare const nominateTx: {
|
|
105
132
|
unsigned: string;
|
|
106
133
|
signed: string;
|
|
@@ -108,5 +135,5 @@ export declare const nominateTx: {
|
|
|
108
135
|
export declare const nominateSender = "5Cm9EXKwcDDNVNDFSUnsp46YCA7QmMVAaRKSFeeCUed1Jbix";
|
|
109
136
|
export declare const nominateValidators: string[];
|
|
110
137
|
export declare const txVersion: number, specVersion: number, genesisHash: string, chainName: string, specName: import("@bitgo/statics").SubstrateSpecNameType;
|
|
111
|
-
export declare const mainTxVersion: number, mainSpecVersion: number, mainGenesisHash: string, mainChainName: string, mainSpecName:
|
|
138
|
+
export declare const mainTxVersion: number, mainSpecVersion: number, mainGenesisHash: string, mainChainName: string, mainSpecName: import("@bitgo/statics").SubstrateSpecNameType;
|
|
112
139
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,eAAO,MAAM,gBAAgB,qIACuG,CAAC;AAErI,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDpB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAKtB,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAqD,CAAC;AAEjF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAQ,SAAS,UAAE,WAAW,UAAE,WAAW,UAAE,SAAS,UAAE,QAAQ,gDAAwB,CAAC;AAChG,eAAO,MACM,aAAa,UACX,eAAe,UACf,eAAe,UACjB,aAAa,UACd,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,eAAO,MAAM,gBAAgB,qIACuG,CAAC;AAErI,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDpB,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCjB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrB,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CA4BvB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAKtB,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAqD,CAAC;AAEjF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AAEF,eAAO,MAAQ,SAAS,UAAE,WAAW,UAAE,WAAW,UAAE,SAAS,UAAE,QAAQ,gDAAwB,CAAC;AAChG,eAAO,MACM,aAAa,UACX,eAAe,UACf,eAAe,UACjB,aAAa,UACd,YAAY,gDACD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a, _b;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.mainSpecName = exports.mainChainName = exports.mainGenesisHash = exports.mainSpecVersion = exports.mainTxVersion = exports.specName = exports.chainName = exports.genesisHash = exports.specVersion = exports.txVersion = exports.nominateValidators = exports.nominateSender = exports.nominateTx = exports.stakingTx = exports.rawTx = exports.accounts = exports.mockTssSignature = exports.testnetMetadataRpc = void 0;
|
|
4
|
+
exports.mainSpecName = exports.mainChainName = exports.mainGenesisHash = exports.mainSpecVersion = exports.mainTxVersion = exports.specName = exports.chainName = exports.genesisHash = exports.specVersion = exports.txVersion = exports.nominateValidators = exports.nominateSender = exports.nominateTx = exports.stakingTxV8 = exports.stakingTx = exports.rawTx = exports.accounts = exports.mockTssSignature = exports.testnetMetadataRpc = void 0;
|
|
5
5
|
const statics_1 = require("@bitgo/statics");
|
|
6
6
|
var testnet_1 = require("./testnet");
|
|
7
7
|
Object.defineProperty(exports, "testnetMetadataRpc", { enumerable: true, get: function () { return testnet_1.testnetMetadataRpc; } });
|
|
@@ -107,6 +107,35 @@ exports.stakingTx = {
|
|
|
107
107
|
},
|
|
108
108
|
},
|
|
109
109
|
};
|
|
110
|
+
/** v8 testnet sandbox — block 24829135, stakeV8.cjs --batch */
|
|
111
|
+
exports.stakingTxV8 = {
|
|
112
|
+
sandbox: {
|
|
113
|
+
stash: '5CLYvxwx4PUS678MNuhNJ9EfpUU9utrYCz9WVxovac4u9AYD',
|
|
114
|
+
validator: '5C7kNpSvVr22Z1X6gVAUjfahSJfSpvw4DHNoY7uUHpLfEJZR',
|
|
115
|
+
bondAmount: '10000000',
|
|
116
|
+
payee: 'Staked',
|
|
117
|
+
specVersion: 8000000,
|
|
118
|
+
transactionVersion: 8,
|
|
119
|
+
blockHeight: 24829135,
|
|
120
|
+
blockHash: '0xfe64f0f0be51fc791b12dcf81d3ad82a682719f498639dde956baaf473a57e8c',
|
|
121
|
+
referenceBlock: '0x52ea71e4fec68c49f8e6511c7209bc6ab5411547308a37648d126f9e0041a420',
|
|
122
|
+
nonce: 189,
|
|
123
|
+
firstValid: 24829132,
|
|
124
|
+
bondedEvent: ['5CLYvxwx4PUS678MNuhNJ9EfpUU9utrYCz9WVxovac4u9AYD', 10000000],
|
|
125
|
+
},
|
|
126
|
+
batch: {
|
|
127
|
+
bondAndNominate: {
|
|
128
|
+
// full utility.batchAll method hex from sandbox (46 bytes)
|
|
129
|
+
callHex: '0x2902081100025a62020011050400025237fdbea82f075296416fa096d3b9807c4f8763d7c3474fdd747007379811',
|
|
130
|
+
// full ExtrinsicPayload.toU8a({ method: true }) — 125 bytes
|
|
131
|
+
extrinsicPayloadHex: '0x2902081100025a62020011050400025237fdbea82f075296416fa096d3b9807c4f8763d7c3474fdd747007379811c500f502000000127a00080000002ace05e703aa50b48c0ccccfc8b424f7aab9a1e2c424ed12e45d20b1e8ffd0d652ea71e4fec68c49f8e6511c7209bc6ab5411547308a37648d126f9e0041a42000',
|
|
132
|
+
payloadLength: 125,
|
|
133
|
+
specVersionLE: '00127a00',
|
|
134
|
+
txVersionLE: '08000000',
|
|
135
|
+
tailAfterRefBlock: '0000',
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
};
|
|
110
139
|
exports.nominateTx = {
|
|
111
140
|
unsigned: '0x11050800025237fdbea82f075296416fa096d3b9807c4f8763d7c3474fdd7470073798110060c819a103b56679947c39924a7cc616cb78e84da6c5303ebe1521b3feb62813',
|
|
112
141
|
signed: '0xb10284001ed73dfc30f7b1359d92004d6954ea47a1e447f813f637ec44302a9f6d773d4a01822b6f38948c972764afe53df261221dfd65f79bd51517f4384d5669a36aad6a78290cc4c6a678c3ebe698799232a08792cd063e051a642d355bdaa166225d8ec5033c0011050800025237fdbea82f075296416fa096d3b9807c4f8763d7c3474fdd7470073798110060c819a103b56679947c39924a7cc616cb78e84da6c5303ebe1521b3feb62813',
|
|
@@ -118,4 +147,4 @@ exports.nominateValidators = [
|
|
|
118
147
|
];
|
|
119
148
|
_a = statics_1.Networks.test.polyx, exports.txVersion = _a.txVersion, exports.specVersion = _a.specVersion, exports.genesisHash = _a.genesisHash, exports.chainName = _a.chainName, exports.specName = _a.specName;
|
|
120
149
|
_b = statics_1.Networks.main.polyx, exports.mainTxVersion = _b.txVersion, exports.mainSpecVersion = _b.specVersion, exports.mainGenesisHash = _b.genesisHash, exports.mainChainName = _b.chainName, exports.mainSpecName = _b.specName;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNENBQTBDO0FBQzFDLHFDQUErQztBQUF0Qyw2R0FBQSxrQkFBa0IsT0FBQTtBQUVkLFFBQUEsZ0JBQWdCLEdBQzNCLGtJQUFrSSxDQUFDO0FBRXhILFFBQUEsUUFBUSxHQUFHO0lBQ3RCLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUNQLGtJQUFrSTtRQUNwSSxTQUFTLEVBQUUsa0VBQWtFO1FBQzdFLE9BQU8sRUFBRSxrREFBa0Q7S0FDNUQ7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQ1Asa0lBQWtJO1FBQ3BJLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUNQLGtJQUFrSTtRQUNwSSxTQUFTLEVBQUUsa0VBQWtFO1FBQzdFLE9BQU8sRUFBRSxrREFBa0Q7S0FDNUQ7SUFDRCxlQUFlLEVBQUU7UUFDZixTQUFTLEVBQ1Asa0lBQWtJO1FBQ3BJLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtJQUNELGVBQWUsRUFBRTtRQUNmLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsUUFBUSxFQUFFLDJFQUEyRTtRQUNyRixTQUFTLEVBQ1Asa0lBQWtJO1FBQ3BJLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtDQUNGLENBQUM7QUFFVyxRQUFBLEtBQUssR0FBRztJQUNuQixRQUFRLEVBQUU7UUFDUixNQUFNLEVBQ0osd1dBQXdXO1FBQzFXLFFBQVEsRUFDTixrVEFBa1Q7S0FDclQ7SUFDRCxjQUFjLEVBQUU7UUFDZCxNQUFNLEVBQ0osOFJBQThSO1FBQ2hTLFFBQVEsRUFDTixzT0FBc087S0FDek87SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQ0osOE9BQThPO1FBQ2hQLFFBQVEsRUFBRSxnQ0FBZ0M7S0FDM0M7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixNQUFNLEVBQ0osa09BQWtPO1FBQ3BPLFFBQVEsRUFBRSxvQkFBb0I7S0FDL0I7SUFDRCxlQUFlLEVBQUU7UUFDZixNQUFNLEVBQ0osMFBBQTBQO1FBQzVQLFFBQVEsRUFDTixrTUFBa007S0FDck07SUFDRCxhQUFhLEVBQUU7UUFDYixNQUFNLEVBQ0osa2pCQUFrakI7UUFDcGpCLFFBQVEsRUFDTiw0ZkFBNGY7S0FDL2Y7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixNQUFNLEVBQ0osNFNBQTRTO1FBQzlTLFFBQVEsRUFDTixvUEFBb1A7S0FDdlA7Q0FDRixDQUFDO0FBRVcsUUFBQSxTQUFTLEdBQUc7SUFDdkIsSUFBSSxFQUFFO1FBQ0osUUFBUSxFQUFFLG9GQUFvRjtRQUM5RixNQUFNLEVBQ0osa1NBQWtTO0tBQ3JTO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsUUFBUSxFQUNOLDhOQUE4TjtRQUNoTyxNQUFNLEVBQ0osOE5BQThOO0tBQ2pPO0lBQ0QsTUFBTSxFQUFFO1FBQ04sUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixNQUFNLEVBQ0osa09BQWtPO0tBQ3JPO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsZUFBZSxFQUFFO1lBQ2YsUUFBUSxFQUNOLG9LQUFvSztZQUN0SyxNQUFNLEVBQ0osZ1hBQWdYO1NBQ25YO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLDBGQUEwRjtZQUNwRyxNQUFNLEVBQ0osd1NBQXdTO1NBQzNTO1FBQ0QsWUFBWSxFQUFFO1lBQ1osUUFBUSxFQUFFLHNGQUFzRjtZQUNoRyxNQUFNLEVBQ0osb1NBQW9TO1NBQ3ZTO0tBQ0Y7Q0FDRixDQUFDO0FBRVcsUUFBQSxVQUFVLEdBQUc7SUFDeEIsUUFBUSxFQUNOLDhJQUE4STtJQUNoSixNQUFNLEVBQ0osZ1dBQWdXO0NBQ25XLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRyxrREFBa0QsQ0FBQztBQUVwRSxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDLGtEQUFrRDtJQUNsRCxrREFBa0Q7Q0FDbkQsQ0FBQztBQUVXLEtBQStELGtCQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBaEYsaUJBQVMsaUJBQUUsbUJBQVcsbUJBQUUsbUJBQVcsbUJBQUUsaUJBQVMsaUJBQUUsZ0JBQVEsZUFBeUI7QUFDbkYsS0FNVCxrQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBTFYscUJBQWEsaUJBQ1gsdUJBQWUsbUJBQ2YsdUJBQWUsbUJBQ2pCLHFCQUFhLGlCQUNkLG9CQUFZLGVBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZXR3b3JrcyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmV4cG9ydCB7IHRlc3RuZXRNZXRhZGF0YVJwYyB9IGZyb20gJy4vdGVzdG5ldCc7XG5cbmV4cG9ydCBjb25zdCBtb2NrVHNzU2lnbmF0dXJlID1cbiAgJ2FhZGFlN2ZhMWY1M2U3YTVjOTAwYjMzMGZmNzFiZWU2NzgyY2YzYzI5YTJjNmY5NTk5MTYyMzgxY2QwMjFhZDU4MWM3NGRlZDg5ZjQ5ZWM3OWFkZWZlZDY0YWY4ZmYxNjY0OTU1MzUyM2RkYTljYjRmMDE3Y2JmMTU2ODFlNTBlJztcblxuZXhwb3J0IGNvbnN0IGFjY291bnRzID0ge1xuICBjZGRQcm92aWRlcjoge1xuICAgIHNlY3JldEtleTpcbiAgICAgICczNjBkY2ZhZDhmYmU2ZDUxNGUyNzg2NmNlMTM0ZmNjNDU4YmM0NTBkZDJmMDM2MDBiMGE2NDZlYzhmNWI0MDI0NWE5ZjViYTVmNTFkZTNhMzhiMWVlN2Y3ZTkxZGM5ZTg0NDY5NmQ3ZGE1NDVkNzhhMTRiMTYzNTI0NGUzNGQyYScsXG4gICAgcHVibGljS2V5OiAnNWE5ZjViYTVmNTFkZTNhMzhiMWVlN2Y3ZTkxZGM5ZTg0NDY5NmQ3ZGE1NDVkNzhhMTRiMTYzNTI0NGUzNGQyYScsXG4gICAgYWRkcmVzczogJzVFN1hXSlJ5c2oyN0V6aWJUNGR1UnhyQlFUOVFmYTdaNW5BQXZKbXZkMzJuaGtqSCcsXG4gIH0sXG4gIGFjY291bnQxOiB7XG4gICAgc2VjcmV0S2V5OlxuICAgICAgJ2FjZmE5YTkxZWQxMWVjYzcyZGMwMTU1NjJmY2IyOGE0YjRiYmNhNGI3NGY3OTE1MTE5NTc4ZWQ0NTc5ODQ0YzhjZDEyOTNkNWIyZWE2ZDdjNzA2ODkwNzljZGU5Y2NjM2RkM2Y0MzY2ZGZmNGZhMmYzZTQ2YmE5ZWUzODBkZjU3JyxcbiAgICBwdWJsaWNLZXk6ICdjZDEyOTNkNWIyZWE2ZDdjNzA2ODkwNzljZGU5Y2NjM2RkM2Y0MzY2ZGZmNGZhMmYzZTQ2YmE5ZWUzODBkZjU3JyxcbiAgICBhZGRyZXNzOiAnNUdoYkM2bjJwVUZyWDk4RHd5UGl0NjdmQjVBd1F2VkN3WjRqMkhLQTdhNGRVSzR5JyxcbiAgfSxcbiAgYWNjb3VudDI6IHtcbiAgICBzZWNyZXRLZXk6XG4gICAgICAnMzc2MmUwNTcyNDk4OGVhNjVmMjc5YWI2ZmFkODZhZmQxNjdjNTVlM2ZmYzk1NTgxYmE1N2U5NGNkZTI1ZWRkODhiMDVhMWFiYmRiMzBiYzM1MjZhYjA4MjdjMDM5ODY3ZjkxNmNkYzE5NzgyNWQ3NWQ4Yjk2MzhmOWYzNWRkNzknLFxuICAgIHB1YmxpY0tleTogJzhiMDVhMWFiYmRiMzBiYzM1MjZhYjA4MjdjMDM5ODY3ZjkxNmNkYzE5NzgyNWQ3NWQ4Yjk2MzhmOWYzNWRkNzknLFxuICAgIGFkZHJlc3M6ICc1RkN6Qms3aGdoWmg1cEtDRXg1SHh1NktRNWpTejUxNDJnaW9HWVVGbUtHWW14R0YnLFxuICB9LFxuICBhY2NvdW50Mzoge1xuICAgIHNlY3JldEtleTpcbiAgICAgICdlYjRiZWI2N2E3ZWQ2YjVjNjgxNjE2NGJjY2E4MDY1ZTE3MjNmYTA5NTNmZTY4YzM4OWI1OWMxZTQ4ZGM0Y2FkZDM1NTNiMTk1NzA4Y2NlYzg5ZjJkZDgyNWE2NjQ2NDA3YjY3OTc3MjU1MWExNDRmZWNiNDg3YzEwOGRmMmU0ZCcsXG4gICAgcHVibGljS2V5OiAnZDM1NTNiMTk1NzA4Y2NlYzg5ZjJkZDgyNWE2NjQ2NDA3YjY3OTc3MjU1MWExNDRmZWNiNDg3YzEwOGRmMmU0ZCcsXG4gICAgYWRkcmVzczogJzVHcW9IQjdnZFZUdzFxN0Q5YXFpNU1XZnZmR2o1SjdNWW10Z0VuYkFtSDZjd2FFNicsXG4gIH0sXG4gIGFjY291bnQ0OiB7XG4gICAgc2VjcmV0S2V5OlxuICAgICAgJzMwZWVkMzg4M2Q0MWQxNWEyYjhhOGJlYWJmZWZhNGI0OGU0ZmRhZTZmZDZlYmMzYjk5MzY1YzZhMWRhZmNjYzQ4NDkzZWMyYzIwMDMzZGVmN2YzMTBjNTY3MDgxM2JhMDk0MDYxMDBhZDU4M2Q1MDFlYzI5OTAzMmE4MzUyYjMyJyxcbiAgICBwdWJsaWNLZXk6ICc4NDkzZWMyYzIwMDMzZGVmN2YzMTBjNTY3MDgxM2JhMDk0MDYxMDBhZDU4M2Q1MDFlYzI5OTAzMmE4MzUyYjMyJyxcbiAgICBhZGRyZXNzOiAnNUY0WTd2S3Q0NnA2aTJaQmVXVFVnZWJKNFdIbTJ0TEZtTHpkaWNIZWJXelExVTI1JyxcbiAgfSxcbiAgYWNjb3VudDVNYWlubmV0OiB7XG4gICAgc2VjcmV0S2V5OlxuICAgICAgJzUyYzU5NmU4YjM5MjllYTBkOTg3NzljNDM4ZWQ1YjVmYjkzNzc3OTBlMDJkMjJmOTQxNjkxOTEwMTVmY2RjMDZlODA3ODAwYTNkZDc4YzAwNWUxNDRmMjBkZjA1ZGJhN2ZmZTIwYjRiY2IyOWYxNThkYTNiYzMwZjZkNTU3OTkxJyxcbiAgICBwdWJsaWNLZXk6ICdlODA3ODAwYTNkZDc4YzAwNWUxNDRmMjBkZjA1ZGJhN2ZmZTIwYjRiY2IyOWYxNThkYTNiYzMwZjZkNTU3OTkxJyxcbiAgICBhZGRyZXNzOiAnMkhoOVNVM3d3R0VSQkdwMVQ4QlkxVDh4cDdrckg3dXJDOUZzTkdTZnN5VHlFRDhEJyxcbiAgfSxcbiAgYWNjb3VudDZNYWlubmV0OiB7XG4gICAgc2VjcmV0S2V5OlxuICAgICAgJzEzZGNjODkyODM1ZTkxZWE5ZTBlZDQzNDY2MGFlZmNlYTYwZDFlNTcxODdmMzFmYzYxMGE2MDk3NzU4NmMwYmJiNWRkYTlhYWQ1MTI5YjRjNzdiODRiYjA4ZTY2MmZjMWM4NjNhNmExNmY1NTdhNzM0Mzc1ZWRhZDZkM2NjYmY3JyxcbiAgICBwdWJsaWNLZXk6ICdiNWRkYTlhYWQ1MTI5YjRjNzdiODRiYjA4ZTY2MmZjMWM4NjNhNmExNmY1NTdhNzM0Mzc1ZWRhZDZkM2NjYmY3JyxcbiAgICBhZGRyZXNzOiAnMkdaTmNtMzZuRXJaRDNtaTYxOUMyaXFZV1FCUk1tZVdreTljTG5iZDJEY0F2ZHhtJyxcbiAgfSxcbiAgcmJpdGdvVG9rZW5Pd25lcjoge1xuICAgIG1uZW1vbmljOiAnc2l6ZSBtZXJyeSByYXJlICoqKm9yeSBlZ2cgYWZmKiogb3JiaXQgbXUqKioqKiogYW5ncnkgbWlzcyBvZioqKiBidSoqKioqKicsXG4gICAgc2VjcmV0S2V5OlxuICAgICAgJzhhMDlhZmYxOTRiMTFiOTY0MGQzZmU5NjZjMDU2YTllYzVhYTk4NmE2YjllZTY2ZGFkMWI3MjZmNmYzNTkxOWI5NmM4NmZlZjU5M2Y5ZDM1ZWE3MGRkNTE5ZTgwZGNmNTBkOTM2MzA5NTRmOGQ1YzgzNDE0YWU3MzExMjk2NTVmJyxcbiAgICBwdWJsaWNLZXk6ICc5NmM4NmZlZjU5M2Y5ZDM1ZWE3MGRkNTE5ZTgwZGNmNTBkOTM2MzA5NTRmOGQ1YzgzNDE0YWU3MzExMjk2NTVmJyxcbiAgICBhZGRyZXNzOiAnNUZVUWFpZjRzNzlkOHNpYkdOZGZMSHVpeUNxaDJFbURweVdramo4eVE1R3RVcE1WJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCByYXdUeCA9IHtcbiAgdHJhbnNmZXI6IHtcbiAgICBzaWduZWQ6XG4gICAgICAnMHhjMTAyODQwMDBjMTVlMTBmYzE5NmQ5NTk3OTc3ZjhiZmNjZGE1MzE0OWM0ZjQ3ZjRlOWYzN2E1NTY0YzNjNmFiZWZiOGQ1MmEwMDkyNGEwMGY4Y2YzZTczYjRlNGE2NmYwODhmOThkZmFjYjBhYWU5YTk4MTRjN2JkZWIzNmU3ZDk1MTgxNzMwYWU3YjliYTY0OGVkMGY0ZTMzMGY0NGE2NjZlMzM2NzQ1ZDlmYjBiMmE2YmRkYzJjMDlkMzI3OTVjMjE1N2E2ODBjYjUwMzg4MDAwNTAxMDA4N2M4YmUwNjdiZTAyYTMyMWFkOGU5NDZhNGE1MGQ3MWMyNWI5YTY0MGQwNjRlYzU3N2Q0ZWY5NDI0YjkwYjQ2MDMwMDk0MzU3NzAxMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzEzMjMzMzQzNScsXG4gICAgdW5zaWduZWQ6XG4gICAgICAnMHgyNTAxMDUwMTAwODdjOGJlMDY3YmUwMmEzMjFhZDhlOTQ2YTRhNTBkNzFjMjViOWE2NDBkMDY0ZWM1NzdkNGVmOTQyNGI5MGI0NjAzMDA5NDM1NzcwMTMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMxMzIzMzM0MzVhNTAzOTAwMDkwZDc2YTAwMDcwMDAwMDAyYWNlMDVlNzAzYWE1MGI0OGMwY2NjY2ZjOGI0MjRmN2FhYjlhMWUyYzQyNGVkMTJlNDVkMjBiMWU4ZmZkMGQ2ZTVjNTM5NmYzMjkxZDI1NzVkMTM4Yjk4ZDM0ZWFjMmZjMTU2ZTUyODAyNzZmNTdhMzBhOGUzYjhmYmM0OWJmYycsXG4gIH0sXG4gIGNkZFRyYW5zYWN0aW9uOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4MmQwMjg0MDA1YTlmNWJhNWY1MWRlM2EzOGIxZWU3ZjdlOTFkYzllODQ0Njk2ZDdkYTU0NWQ3OGExNGIxNjM1MjQ0ZTM0ZDJhMDBiYjljZTFkZGZkYTZkNjBlODE2OWQyY2FiMzdlNTdjYTFiMWQ4NTkyZjNjYWFjYzI1YjgwZDIzZjRjMjljMWVmZDA5NmM5YWZiZDg2MTQ4YzEyZTY4NTcwYmFiNGVkMzk2NWIzMTgwNTcwMjkzZWE0YmU2Zjg0OWJhMzYyZDgwMzQ1MDMwNDAwMDcxNDYwYjY4NWQ4MmIzMTViNzBkN2M3NjA0Zjk5MGEwNTM5NWVhYjA5ZDVlNzViYWU1ZDJjNTE5Y2ExYjAxZTI1ZTUwMDAwJyxcbiAgICB1bnNpZ25lZDpcbiAgICAgICcweDkwMDcxNDYwYjY4NWQ4MmIzMTViNzBkN2M3NjA0Zjk5MGEwNTM5NWVhYjA5ZDVlNzViYWU1ZDJjNTE5Y2ExYjAxZTI1ZTUwMDAwNDUwMzA0MDA5MGQ3NmEwMDA3MDAwMDAwMmFjZTA1ZTcwM2FhNTBiNDhjMGNjY2NmYzhiNDI0ZjdhYWI5YTFlMmM0MjRlZDEyZTQ1ZDIwYjFlOGZmZDBkNmNiZDRmMGJiNzRlMTNjOGM0ZGE5NzNiMWExNWMzZGY2MWFlM2I4MjY3N2IwMjRmZmE2MGZhZjc3OTlkNWVkNGInLFxuICB9LFxuICB1bnN0YWtlOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4Y2QwMTg0MDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4MDExYTc0MGU2M2E4NTg1OGM5ZmE5OWJhMzgxY2UzYjljMTJkYjg3MmMwZDk3Njk0OGRmOWQ1MjA2ZjM1NjQyYzc4YThjMjVhMmY5MjdiNTY5YTE2Mzk4NWRjYjdlMjdlNjNmZTJmYWE5MjYzNzFlNzlhMDcwNzAzMDk1NjA3Yjc4N2Q1MDIxODAwMjkwMjA4MTEwNjExMDIwMzQzNTNjNWIzJyxcbiAgICB1bnNpZ25lZDogJzB4MzQwNDI5MDIwODExMDYxMTAyMDM0MzUzYzViMycsXG4gIH0sXG4gIHdpdGhkcmF3VW5ib25kZWQ6IHtcbiAgICBzaWduZWQ6XG4gICAgICAnMHhiNTAxODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMWE2NzY0MGUxZjYxYTM4ODFhNmZhM2QwOTNlMDkxNDlmMDBhNzU3NDdmNDdmYWNiNDk3Njg5YzZiYjJmNzFkNDliOTFlYmViZTEyY2NjMmZlYmJhODZiNmFmODY5Yzk3OTA1M2I4MTFmMzNlYThhYmE0ODkzOGFmZjQ4YjU2NDg4YTUwMTIwMDAxMTAzMDAwMDAwMDAnLFxuICAgIHVuc2lnbmVkOiAnMHgxYzA0MTEwMzAwMDAwMDAwJyxcbiAgfSxcbiAgcHJlQXBwcm92ZUFzc2V0OiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4ZTUwMTg0MDAzZThmYjkwNWM4MWVlODkwZTE2MzNlZWNlNDFmNTg1N2VkZTEyNmFlMGExZjU3NDRhZjhiODY0NTZjZDc3Y2M3MDA2ODY4MDZhNjEyODg2YzYzZDJiMGYyMmVkMDhhNjhkYmY1ODMzYmFjNDAyODU2Y2M4MDJmNDJlNDg2ZDUyOTJlZGRlOWQ2MWNjY2VkZDA5MDBmYzcwZDFjOWIzNGZlYzc2M2E1MDMzOGM5NjZlZDNmNDVmMmQ5MjM2NjA2OGYwNTk1MDEwNDAwMWExYjc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JyxcbiAgICB1bnNpZ25lZDpcbiAgICAgICcweDQ4MWExYjc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4YzUwMTA0MDA3YmRiNmEwMDA3MDAwMDAwMmFjZTA1ZTcwM2FhNTBiNDhjMGNjY2NmYzhiNDI0ZjdhYWI5YTFlMmM0MjRlZDEyZTQ1ZDIwYjFlOGZmZDBkNjUyZmFmMjM5YjRmZjM5NjA0MGQ3MDliMzI4NDBkMDViNWU3ODg1MDA5YjlmMTk4YjAxZmUxYTM5NWQzZTEzMDYnLFxuICB9LFxuICB0b2tlblRyYW5zZmVyOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4NTUwNDg0MDBlODE2NGJiZTgxOTY0YmUyODI5MmQ5NmY2MmMyZWY2MTE3ZDkxMTYzOGYzOGFlMWIxYmJlNjlkZjBiNmRmMTI3MDBmOWJlMGY1NmZkZmIyYmJkYjE0MTEwNjNlYjE1ODNhNWU5MjY0NDA4MDk1ZDUyZDA3YzhhNTExY2I1ZTI2ZTgxYzMzZDM4ZTI4YzA4YzY5YjczZGUxMTljM2NjODljOWFhNjk5MDliNTI4ZTJkYzFiNjEyZTFlM2YwOTk4M2YwYjU1MDAwYzAwMjUxNDAwMDAwMDAwMDQwMDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDIwMGJjNmY3ZWM4MDhmMzYxYzEzNTNhYjlkYzg4YzNjYzU0Yjk4ZDllYjYwZmVkOWMwNjNlNjdhNDA5MjViOGVmNjEwMDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4NDA0MjBmMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDIwMDAxMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICB1bnNpZ25lZDpcbiAgICAgICcweGI5MDIyNTE0MDAwMDAwMDAwNDAwMTIwOGQ3ODUxZTY2OTgyNDlhZWE0MDc0MjcwMWVlMWVmNmNkY2NlZDI2MGE3YzQ5YzFjY2ExYTlkYjgzNjM0MjAwYmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MTAwNzgwNjAyODg3YjM1OGNmNDg5ODlkMGQ5YWE2YzhkMjg0MDQyMGYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MTIwOGQ3ODUxZTY2OTgyNDlhZWE0MDc0MjcwMWVlMWVmNmNkY2NlZDI2MGE3YzQ5YzFjY2ExYTlkYjgzNjM0MjAwMDEzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NTAwMGMwMDdiZGI2YTAwMDcwMDAwMDAyYWNlMDVlNzAzYWE1MGI0OGMwY2NjY2ZjOGI0MjRmN2FhYjlhMWUyYzQyNGVkMTJlNDVkMjBiMWU4ZmZkMGQ2MzlmZTk2ZjBkYWI1YTk2ZTExOGRlODMwZGMxZjVkMDEwNWFkZWFlM2YzMjA4Y2U5NWU4ZTAzNDk0NDU2ZTE5MScsXG4gIH0sXG4gIHJlamVjdEluc3RydWN0aW9uOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4NDkwMjg0MDBlODE2NGJiZTgxOTY0YmUyODI5MmQ5NmY2MmMyZWY2MTE3ZDkxMTYzOGYzOGFlMWIxYmJlNjlkZjBiNmRmMTI3MDA0YTA4ZDljY2JiNGIxNTdjM2RmNGIzZTdhOGJjNjAyZTZmNWZhYjA3NWE0YmYzNmIyOTk2M2E5YTg5MjZkMTZiMjgwYzJlNTE0ZTUzNGQ0MmJjZjMxNzMzNzJjNjE5NDQ5YzU5NWQ2MTgzYTlmYmU1ZjlhOGVmZTljNWI2MTAwOTY1MDM0ODAwMjUwZDE0MzcwMDAwMDAwMDAwMDAxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyMDAnLFxuICAgIHVuc2lnbmVkOlxuICAgICAgJzB4YWMyNTBkMTQzNzAwMDAwMDAwMDAwMDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDIwMDI1MDE0YzAwN2JkYjZhMDAwNzAwMDAwMDJhY2UwNWU3MDNhYTUwYjQ4YzBjY2NjZmM4YjQyNGY3YWFiOWExZTJjNDI0ZWQxMmU0NWQyMGIxZThmZmQwZDZmZmVjYjQ2NzIyNTExMzdlZjM4YzlhY2E3YzAzMWU1NzhhZTEzYzM3NmMxNjk5ZmM5Y2MwOTRjMjllMTZjN2RmJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBzdGFraW5nVHggPSB7XG4gIGJvbmQ6IHtcbiAgICB1bnNpZ25lZDogJzB4OWMwNDExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAnLFxuICAgIHNpZ25lZDpcbiAgICAgICcweDM1MDI4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxMDAwNjY0MjliZGU3Zjc1ZjUwYTc5MmRiYTEzN2E1MjQ2MTFkZWJkNTcwMThjOTA4ZjhkYWE2Zjk0YTZlMjQ2YWM2MGQ4MzliNjlmMGY3ZGY2ZjkxNjkxM2Q5ZGNjYjcwOWFkNTY4NTdmODY2YzM3NzVkN2ZmY2I1ZDc2NGYzOGZlNTAyMGMwMDExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAnLFxuICB9LFxuICBib25kRXh0cmE6IHtcbiAgICB1bnNpZ25lZDpcbiAgICAgICcweGFkMDE4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxMjAxMTk5YTQzZThlZTlmZWM3NzZhYzAwNDUxMjBlNTRiNjFlZGQ0ZGE4Yjk0OTk5Mzc3MmM3ZDAxODRlNjgyYTVmZDNlMmY2NGUwMTY0YTEwYjlmZjgzNzkyOGM4YjY1ODM5OGIyOTIwMTJiYWI1YjdhMzc3ZTY1NGEzMDJiODE3NTAxMDgwMDExMDFhMTBmJyxcbiAgICBzaWduZWQ6XG4gICAgICAnMHhhZDAxODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMTIwMTE5OWE0M2U4ZWU5ZmVjNzc2YWMwMDQ1MTIwZTU0YjYxZWRkNGRhOGI5NDk5OTM3NzJjN2QwMTg0ZTY4MmE1ZmQzZTJmNjRlMDE2NGExMGI5ZmY4Mzc5MjhjOGI2NTgzOThiMjkyMDEyYmFiNWI3YTM3N2U2NTRhMzAyYjgxNzUwMTA4MDAxMTAxYTEwZicsXG4gIH0sXG4gIHVuYm9uZDoge1xuICAgIHVuc2lnbmVkOiAnMHgxMTAyMDIwOTNkMDAnLFxuICAgIHNpZ25lZDpcbiAgICAgICcweGI1MDE4NDAwMWVkNzNkZmMzMGY3YjEzNTlkOTIwMDRkNjk1NGVhNDdhMWU0NDdmODEzZjYzN2VjNDQzMDJhOWY2ZDc3M2Q0YTAxMDY0YjdmNzVlNGI0MGUxNWFiYWFkY2RiNjk0ZDRkMjU4ZTRjMmYxOTIyN2NlN2NmNjNmMmJhZDRiNjljZGExZTVmNjMwN2Y0ZWY0Zjc5ZWI3NjQyYTZhODU4MDFhODBmNDc3ZDdkNTBkMjZjMTljZjY0M2UyZmNhOTMxNGQ3ODAyNTAzM2MwMDExMDIwMjA5M2QwMCcsXG4gIH0sXG4gIGJhdGNoOiB7XG4gICAgYm9uZEFuZE5vbWluYXRlOiB7XG4gICAgICB1bnNpZ25lZDpcbiAgICAgICAgJzB4MzkwMTA0MjkwMjA4MTEwMDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODQxOWMwMDExMDUwNDAwMDI1MjM3ZmRiZWE4MmYwNzUyOTY0MTZmYTA5NmQzYjk4MDdjNGY4NzYzZDdjMzQ3NGZkZDc0NzAwNzM3OTgxMScsXG4gICAgICBzaWduZWQ6XG4gICAgICAgICcweGQxMDI4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxODI3MDk0ZTViMmQ4OTM3MTRiNWI1OTRkOWJhZWY4YjAzOWZhMWE3ZmM5MjBkNTc3MDdkMTNiYzhmYTdjZjcxYzc2YjI2Y2M2NjUxYzBjMDc3MzVjNDA5MGM0Y2ZhZjZmMjI2ZTA1ZDkyYTQwN2ZlZjg0MDI1NjJkY2FkNzcxODhmNTAyMTQwMDI5MDIwODExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAxMTA1MDQwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTEnLFxuICAgIH0sXG4gICAgYm9uZE9ubHk6IHtcbiAgICAgIHVuc2lnbmVkOiAnMHhhODA0MjkwMDA0MTEwMDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODQxOWMwMCcsXG4gICAgICBzaWduZWQ6XG4gICAgICAgICcweDQxMDI4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxZmUwOTllZTY4MGI3MjFlZDBiMTQ1MzNlZjNhMDI4MjlmMzQyMjAxY2NmMjNiNmZhM2Y3YjgwY2M4YzAwMjQ0ZjYzNDQzZDE2NDExYjY2NzExNGQxNTZmYjE0YjRiM2M5MzlkYmUzNzM4ODdhYTE1Njk1NzdiZmRhMTVmNTYwOGZmNTAyMTQwMDI5MDAwNDExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAnLFxuICAgIH0sXG4gICAgbm9taW5hdGVPbmx5OiB7XG4gICAgICB1bnNpZ25lZDogJzB4YTAwNDI5MDAwNDExMDUwNDAwMDI1MjM3ZmRiZWE4MmYwNzUyOTY0MTZmYTA5NmQzYjk4MDdjNGY4NzYzZDdjMzQ3NGZkZDc0NzAwNzM3OTgxMScsXG4gICAgICBzaWduZWQ6XG4gICAgICAgICcweDM5MDI4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxYTY2OTRhOGQxMGFmYTRmZjg0NjIxZGUzNmU2YjQ2OGFkMzA5NzEyNjFiNzUyNDM1OTY2Y2EwMGY1MDU3ODUwNWZjMWZiNDk1MWQxMGViYmI5YmNlOGI1ZmE3YWFmMDQ3MTk1ZjU4ZWE3NDE4ZGEwYjIwZmIyNzk2MzYyMDAzODRmNTAyMTQwMDI5MDAwNDExMDUwNDAwMDI1MjM3ZmRiZWE4MmYwNzUyOTY0MTZmYTA5NmQzYjk4MDdjNGY4NzYzZDdjMzQ3NGZkZDc0NzAwNzM3OTgxMScsXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBub21pbmF0ZVR4ID0ge1xuICB1bnNpZ25lZDpcbiAgICAnMHgxMTA1MDgwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTEwMDYwYzgxOWExMDNiNTY2Nzk5NDdjMzk5MjRhN2NjNjE2Y2I3OGU4NGRhNmM1MzAzZWJlMTUyMWIzZmViNjI4MTMnLFxuICBzaWduZWQ6XG4gICAgJzB4YjEwMjg0MDAxZWQ3M2RmYzMwZjdiMTM1OWQ5MjAwNGQ2OTU0ZWE0N2ExZTQ0N2Y4MTNmNjM3ZWM0NDMwMmE5ZjZkNzczZDRhMDE4MjJiNmYzODk0OGM5NzI3NjRhZmU1M2RmMjYxMjIxZGZkNjVmNzliZDUxNTE3ZjQzODRkNTY2OWEzNmFhZDZhNzgyOTBjYzRjNmE2NzhjM2ViZTY5ODc5OTIzMmEwODc5MmNkMDYzZTA1MWE2NDJkMzU1YmRhYTE2NjIyNWQ4ZWM1MDMzYzAwMTEwNTA4MDAwMjUyMzdmZGJlYTgyZjA3NTI5NjQxNmZhMDk2ZDNiOTgwN2M0Zjg3NjNkN2MzNDc0ZmRkNzQ3MDA3Mzc5ODExMDA2MGM4MTlhMTAzYjU2Njc5OTQ3YzM5OTI0YTdjYzYxNmNiNzhlODRkYTZjNTMwM2ViZTE1MjFiM2ZlYjYyODEzJyxcbn07XG5cbmV4cG9ydCBjb25zdCBub21pbmF0ZVNlbmRlciA9ICc1Q205RVhLd2NERE5WTkRGU1Vuc3A0NllDQTdRbU1WQWFSS1NGZWVDVWVkMUpiaXgnO1xuXG5leHBvcnQgY29uc3Qgbm9taW5hdGVWYWxpZGF0b3JzID0gW1xuICAnNUM3a05wU3ZWcjIyWjFYNmdWQVVqZmFoU0pmU3B2dzRESE5vWTd1VUhwTGZFSlpSJyxcbiAgJzVFRmJ0d0RCUXU2NFdqVUdxQWdDM2t1YWlIODZFMzRDSHRxeGJON3pBZ3d3VDJjZycsXG5dO1xuXG5leHBvcnQgY29uc3QgeyB0eFZlcnNpb24sIHNwZWNWZXJzaW9uLCBnZW5lc2lzSGFzaCwgY2hhaW5OYW1lLCBzcGVjTmFtZSB9ID0gTmV0d29ya3MudGVzdC5wb2x5eDtcbmV4cG9ydCBjb25zdCB7XG4gIHR4VmVyc2lvbjogbWFpblR4VmVyc2lvbixcbiAgc3BlY1ZlcnNpb246IG1haW5TcGVjVmVyc2lvbixcbiAgZ2VuZXNpc0hhc2g6IG1haW5HZW5lc2lzSGFzaCxcbiAgY2hhaW5OYW1lOiBtYWluQ2hhaW5OYW1lLFxuICBzcGVjTmFtZTogbWFpblNwZWNOYW1lLFxufSA9IE5ldHdvcmtzLm1haW4ucG9seXg7XG4iXX0=
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3Jlc291cmNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsNENBQTBDO0FBQzFDLHFDQUErQztBQUF0Qyw2R0FBQSxrQkFBa0IsT0FBQTtBQUVkLFFBQUEsZ0JBQWdCLEdBQzNCLGtJQUFrSSxDQUFDO0FBRXhILFFBQUEsUUFBUSxHQUFHO0lBQ3RCLFdBQVcsRUFBRTtRQUNYLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUNQLGtJQUFrSTtRQUNwSSxTQUFTLEVBQUUsa0VBQWtFO1FBQzdFLE9BQU8sRUFBRSxrREFBa0Q7S0FDNUQ7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQ1Asa0lBQWtJO1FBQ3BJLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsU0FBUyxFQUNQLGtJQUFrSTtRQUNwSSxTQUFTLEVBQUUsa0VBQWtFO1FBQzdFLE9BQU8sRUFBRSxrREFBa0Q7S0FDNUQ7SUFDRCxlQUFlLEVBQUU7UUFDZixTQUFTLEVBQ1Asa0lBQWtJO1FBQ3BJLFNBQVMsRUFBRSxrRUFBa0U7UUFDN0UsT0FBTyxFQUFFLGtEQUFrRDtLQUM1RDtJQUNELGVBQWUsRUFBRTtRQUNmLFNBQVMsRUFDUCxrSUFBa0k7UUFDcEksU0FBUyxFQUFFLGtFQUFrRTtRQUM3RSxPQUFPLEVBQUUsa0RBQWtEO0tBQzVEO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsUUFBUSxFQUFFLDJFQUEyRTtRQUNyRixTQUFT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LG1CQUFFLG1CQUFXLG1CQUFFLGlCQUFTLGlCQUFFLGdCQUFRLGVBQXlCO0FBQ25GLEtBTVQsa0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUxWLHFCQUFhLGlCQUNYLHVCQUFlLG1CQUNmLHVCQUFlLG1CQUNqQixxQkFBYSxpQkFDZCxvQkFBWSxlQUNBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29ya3MgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5leHBvcnQgeyB0ZXN0bmV0TWV0YWRhdGFScGMgfSBmcm9tICcuL3Rlc3RuZXQnO1xuXG5leHBvcnQgY29uc3QgbW9ja1Rzc1NpZ25hdHVyZSA9XG4gICdhYWRhZTdmYTFmNTNlN2E1YzkwMGIzMzBmZjcxYmVlNjc4MmNmM2MyOWEyYzZmOTU5OTE2MjM4MWNkMDIxYWQ1ODFjNzRkZWQ4OWY0OWVjNzlhZGVmZWQ2NGFmOGZmMTY2NDk1NTM1MjNkZGE5Y2I0ZjAxN2NiZjE1NjgxZTUwZSc7XG5cbmV4cG9ydCBjb25zdCBhY2NvdW50cyA9IHtcbiAgY2RkUHJvdmlkZXI6IHtcbiAgICBzZWNyZXRLZXk6XG4gICAgICAnMzYwZGNmYWQ4ZmJlNmQ1MTRlMjc4NjZjZTEzNGZjYzQ1OGJjNDUwZGQyZjAzNjAwYjBhNjQ2ZWM4ZjViNDAyNDVhOWY1YmE1ZjUxZGUzYTM4YjFlZTdmN2U5MWRjOWU4NDQ2OTZkN2RhNTQ1ZDc4YTE0YjE2MzUyNDRlMzRkMmEnLFxuICAgIHB1YmxpY0tleTogJzVhOWY1YmE1ZjUxZGUzYTM4YjFlZTdmN2U5MWRjOWU4NDQ2OTZkN2RhNTQ1ZDc4YTE0YjE2MzUyNDRlMzRkMmEnLFxuICAgIGFkZHJlc3M6ICc1RTdYV0pSeXNqMjdFemliVDRkdVJ4ckJRVDlRZmE3WjVuQUF2Sm12ZDMybmhrakgnLFxuICB9LFxuICBhY2NvdW50MToge1xuICAgIHNlY3JldEtleTpcbiAgICAgICdhY2ZhOWE5MWVkMTFlY2M3MmRjMDE1NTYyZmNiMjhhNGI0YmJjYTRiNzRmNzkxNTExOTU3OGVkNDU3OTg0NGM4Y2QxMjkzZDViMmVhNmQ3YzcwNjg5MDc5Y2RlOWNjYzNkZDNmNDM2NmRmZjRmYTJmM2U0NmJhOWVlMzgwZGY1NycsXG4gICAgcHVibGljS2V5OiAnY2QxMjkzZDViMmVhNmQ3YzcwNjg5MDc5Y2RlOWNjYzNkZDNmNDM2NmRmZjRmYTJmM2U0NmJhOWVlMzgwZGY1NycsXG4gICAgYWRkcmVzczogJzVHaGJDNm4ycFVGclg5OER3eVBpdDY3ZkI1QXdRdlZDd1o0ajJIS0E3YTRkVUs0eScsXG4gIH0sXG4gIGFjY291bnQyOiB7XG4gICAgc2VjcmV0S2V5OlxuICAgICAgJzM3NjJlMDU3MjQ5ODhlYTY1ZjI3OWFiNmZhZDg2YWZkMTY3YzU1ZTNmZmM5NTU4MWJhNTdlOTRjZGUyNWVkZDg4YjA1YTFhYmJkYjMwYmMzNTI2YWIwODI3YzAzOTg2N2Y5MTZjZGMxOTc4MjVkNzVkOGI5NjM4ZjlmMzVkZDc5JyxcbiAgICBwdWJsaWNLZXk6ICc4YjA1YTFhYmJkYjMwYmMzNTI2YWIwODI3YzAzOTg2N2Y5MTZjZGMxOTc4MjVkNzVkOGI5NjM4ZjlmMzVkZDc5JyxcbiAgICBhZGRyZXNzOiAnNUZDekJrN2hnaFpoNXBLQ0V4NUh4dTZLUTVqU3o1MTQyZ2lvR1lVRm1LR1lteEdGJyxcbiAgfSxcbiAgYWNjb3VudDM6IHtcbiAgICBzZWNyZXRLZXk6XG4gICAgICAnZWI0YmViNjdhN2VkNmI1YzY4MTYxNjRiY2NhODA2NWUxNzIzZmEwOTUzZmU2OGMzODliNTljMWU0OGRjNGNhZGQzNTUzYjE5NTcwOGNjZWM4OWYyZGQ4MjVhNjY0NjQwN2I2Nzk3NzI1NTFhMTQ0ZmVjYjQ4N2MxMDhkZjJlNGQnLFxuICAgIHB1YmxpY0tleTogJ2QzNTUzYjE5NTcwOGNjZWM4OWYyZGQ4MjVhNjY0NjQwN2I2Nzk3NzI1NTFhMTQ0ZmVjYjQ4N2MxMDhkZjJlNGQnLFxuICAgIGFkZHJlc3M6ICc1R3FvSEI3Z2RWVHcxcTdEOWFxaTVNV2Z2ZkdqNUo3TVltdGdFbmJBbUg2Y3dhRTYnLFxuICB9LFxuICBhY2NvdW50NDoge1xuICAgIHNlY3JldEtleTpcbiAgICAgICczMGVlZDM4ODNkNDFkMTVhMmI4YThiZWFiZmVmYTRiNDhlNGZkYWU2ZmQ2ZWJjM2I5OTM2NWM2YTFkYWZjY2M0ODQ5M2VjMmMyMDAzM2RlZjdmMzEwYzU2NzA4MTNiYTA5NDA2MTAwYWQ1ODNkNTAxZWMyOTkwMzJhODM1MmIzMicsXG4gICAgcHVibGljS2V5OiAnODQ5M2VjMmMyMDAzM2RlZjdmMzEwYzU2NzA4MTNiYTA5NDA2MTAwYWQ1ODNkNTAxZWMyOTkwMzJhODM1MmIzMicsXG4gICAgYWRkcmVzczogJzVGNFk3dkt0NDZwNmkyWkJlV1RVZ2ViSjRXSG0ydExGbUx6ZGljSGViV3pRMVUyNScsXG4gIH0sXG4gIGFjY291bnQ1TWFpbm5ldDoge1xuICAgIHNlY3JldEtleTpcbiAgICAgICc1MmM1OTZlOGIzOTI5ZWEwZDk4Nzc5YzQzOGVkNWI1ZmI5Mzc3NzkwZTAyZDIyZjk0MTY5MTkxMDE1ZmNkYzA2ZTgwNzgwMGEzZGQ3OGMwMDVlMTQ0ZjIwZGYwNWRiYTdmZmUyMGI0YmNiMjlmMTU4ZGEzYmMzMGY2ZDU1Nzk5MScsXG4gICAgcHVibGljS2V5OiAnZTgwNzgwMGEzZGQ3OGMwMDVlMTQ0ZjIwZGYwNWRiYTdmZmUyMGI0YmNiMjlmMTU4ZGEzYmMzMGY2ZDU1Nzk5MScsXG4gICAgYWRkcmVzczogJzJIaDlTVTN3d0dFUkJHcDFUOEJZMVQ4eHA3a3JIN3VyQzlGc05HU2ZzeVR5RUQ4RCcsXG4gIH0sXG4gIGFjY291bnQ2TWFpbm5ldDoge1xuICAgIHNlY3JldEtleTpcbiAgICAgICcxM2RjYzg5MjgzNWU5MWVhOWUwZWQ0MzQ2NjBhZWZjZWE2MGQxZTU3MTg3ZjMxZmM2MTBhNjA5Nzc1ODZjMGJiYjVkZGE5YWFkNTEyOWI0Yzc3Yjg0YmIwOGU2NjJmYzFjODYzYTZhMTZmNTU3YTczNDM3NWVkYWQ2ZDNjY2JmNycsXG4gICAgcHVibGljS2V5OiAnYjVkZGE5YWFkNTEyOWI0Yzc3Yjg0YmIwOGU2NjJmYzFjODYzYTZhMTZmNTU3YTczNDM3NWVkYWQ2ZDNjY2JmNycsXG4gICAgYWRkcmVzczogJzJHWk5jbTM2bkVyWkQzbWk2MTlDMmlxWVdRQlJNbWVXa3k5Y0xuYmQyRGNBdmR4bScsXG4gIH0sXG4gIHJiaXRnb1Rva2VuT3duZXI6IHtcbiAgICBtbmVtb25pYzogJ3NpemUgbWVycnkgcmFyZSAqKipvcnkgZWdnIGFmZioqIG9yYml0IG11KioqKioqIGFuZ3J5IG1pc3Mgb2YqKiogYnUqKioqKionLFxuICAgIHNlY3JldEtleTpcbiAgICAgICc4YTA5YWZmMTk0YjExYjk2NDBkM2ZlOTY2YzA1NmE5ZWM1YWE5ODZhNmI5ZWU2NmRhZDFiNzI2ZjZmMzU5MTliOTZjODZmZWY1OTNmOWQzNWVhNzBkZDUxOWU4MGRjZjUwZDkzNjMwOTU0ZjhkNWM4MzQxNGFlNzMxMTI5NjU1ZicsXG4gICAgcHVibGljS2V5OiAnOTZjODZmZWY1OTNmOWQzNWVhNzBkZDUxOWU4MGRjZjUwZDkzNjMwOTU0ZjhkNWM4MzQxNGFlNzMxMTI5NjU1ZicsXG4gICAgYWRkcmVzczogJzVGVVFhaWY0czc5ZDhzaWJHTmRmTEh1aXlDcWgyRW1EcHlXa2pqOHlRNUd0VXBNVicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgcmF3VHggPSB7XG4gIHRyYW5zZmVyOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4YzEwMjg0MDAwYzE1ZTEwZmMxOTZkOTU5Nzk3N2Y4YmZjY2RhNTMxNDljNGY0N2Y0ZTlmMzdhNTU2NGMzYzZhYmVmYjhkNTJhMDA5MjRhMDBmOGNmM2U3M2I0ZTRhNjZmMDg4Zjk4ZGZhY2IwYWFlOWE5ODE0YzdiZGViMzZlN2Q5NTE4MTczMGFlN2I5YmE2NDhlZDBmNGUzMzBmNDRhNjY2ZTMzNjc0NWQ5ZmIwYjJhNmJkZGMyYzA5ZDMyNzk1YzIxNTdhNjgwY2I1MDM4ODAwMDUwMTAwODdjOGJlMDY3YmUwMmEzMjFhZDhlOTQ2YTRhNTBkNzFjMjViOWE2NDBkMDY0ZWM1NzdkNGVmOTQyNGI5MGI0NjAzMDA5NDM1NzcwMTMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMxMzIzMzM0MzUnLFxuICAgIHVuc2lnbmVkOlxuICAgICAgJzB4MjUwMTA1MDEwMDg3YzhiZTA2N2JlMDJhMzIxYWQ4ZTk0NmE0YTUwZDcxYzI1YjlhNjQwZDA2NGVjNTc3ZDRlZjk0MjRiOTBiNDYwMzAwOTQzNTc3MDEzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMTMyMzMzNDM1YTUwMzkwMDA5MGQ3NmEwMDA3MDAwMDAwMmFjZTA1ZTcwM2FhNTBiNDhjMGNjY2NmYzhiNDI0ZjdhYWI5YTFlMmM0MjRlZDEyZTQ1ZDIwYjFlOGZmZDBkNmU1YzUzOTZmMzI5MWQyNTc1ZDEzOGI5OGQzNGVhYzJmYzE1NmU1MjgwMjc2ZjU3YTMwYThlM2I4ZmJjNDliZmMnLFxuICB9LFxuICBjZGRUcmFuc2FjdGlvbjoge1xuICAgIHNpZ25lZDpcbiAgICAgICcweDJkMDI4NDAwNWE5ZjViYTVmNTFkZTNhMzhiMWVlN2Y3ZTkxZGM5ZTg0NDY5NmQ3ZGE1NDVkNzhhMTRiMTYzNTI0NGUzNGQyYTAwYmI5Y2UxZGRmZGE2ZDYwZTgxNjlkMmNhYjM3ZTU3Y2ExYjFkODU5MmYzY2FhY2MyNWI4MGQyM2Y0YzI5YzFlZmQwOTZjOWFmYmQ4NjE0OGMxMmU2ODU3MGJhYjRlZDM5NjViMzE4MDU3MDI5M2VhNGJlNmY4NDliYTM2MmQ4MDM0NTAzMDQwMDA3MTQ2MGI2ODVkODJiMzE1YjcwZDdjNzYwNGY5OTBhMDUzOTVlYWIwOWQ1ZTc1YmFlNWQyYzUxOWNhMWIwMWUyNWU1MDAwMCcsXG4gICAgdW5zaWduZWQ6XG4gICAgICAnMHg5MDA3MTQ2MGI2ODVkODJiMzE1YjcwZDdjNzYwNGY5OTBhMDUzOTVlYWIwOWQ1ZTc1YmFlNWQyYzUxOWNhMWIwMWUyNWU1MDAwMDQ1MDMwNDAwOTBkNzZhMDAwNzAwMDAwMDJhY2UwNWU3MDNhYTUwYjQ4YzBjY2NjZmM4YjQyNGY3YWFiOWExZTJjNDI0ZWQxMmU0NWQyMGIxZThmZmQwZDZjYmQ0ZjBiYjc0ZTEzYzhjNGRhOTczYjFhMTVjM2RmNjFhZTNiODI2NzdiMDI0ZmZhNjBmYWY3Nzk5ZDVlZDRiJyxcbiAgfSxcbiAgdW5zdGFrZToge1xuICAgIHNpZ25lZDpcbiAgICAgICcweGNkMDE4NDAwYmVjMTEwZWFiNGQzMjdkM2IyYjZiYjY4ZTg4ODY1NGE0NzQ2OTRkMzkzNWNlMzViZDM5MjZlNGJjN2ViZDUzODAxMWE3NDBlNjNhODU4NThjOWZhOTliYTM4MWNlM2I5YzEyZGI4NzJjMGQ5NzY5NDhkZjlkNTIwNmYzNTY0MmM3OGE4YzI1YTJmOTI3YjU2OWExNjM5ODVkY2I3ZTI3ZTYzZmUyZmFhOTI2MzcxZTc5YTA3MDcwMzA5NTYwN2I3ODdkNTAyMTgwMDI5MDIwODExMDYxMTAyMDM0MzUzYzViMycsXG4gICAgdW5zaWduZWQ6ICcweDM0MDQyOTAyMDgxMTA2MTEwMjAzNDM1M2M1YjMnLFxuICB9LFxuICB3aXRoZHJhd1VuYm9uZGVkOiB7XG4gICAgc2lnbmVkOlxuICAgICAgJzB4YjUwMTg0MDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4MDFhNjc2NDBlMWY2MWEzODgxYTZmYTNkMDkzZTA5MTQ5ZjAwYTc1NzQ3ZjQ3ZmFjYjQ5NzY4OWM2YmIyZjcxZDQ5YjkxZWJlYmUxMmNjYzJmZWJiYTg2YjZhZjg2OWM5NzkwNTNiODExZjMzZWE4YWJhNDg5MzhhZmY0OGI1NjQ4OGE1MDEyMDAwMTEwMzAwMDAwMDAwJyxcbiAgICB1bnNpZ25lZDogJzB4MWMwNDExMDMwMDAwMDAwMCcsXG4gIH0sXG4gIHByZUFwcHJvdmVBc3NldDoge1xuICAgIHNpZ25lZDpcbiAgICAgICcweGU1MDE4NDAwM2U4ZmI5MDVjODFlZTg5MGUxNjMzZWVjZTQxZjU4NTdlZGUxMjZhZTBhMWY1NzQ0YWY4Yjg2NDU2Y2Q3N2NjNzAwNjg2ODA2YTYxMjg4NmM2M2QyYjBmMjJlZDA4YTY4ZGJmNTgzM2JhYzQwMjg1NmNjODAyZjQyZTQ4NmQ1MjkyZWRkZTlkNjFjY2NlZGQwOTAwZmM3MGQxYzliMzRmZWM3NjNhNTAzMzhjOTY2ZWQzZjQ1ZjJkOTIzNjYwNjhmMDU5NTAxMDQwMDFhMWI3ODA2MDI4ODdiMzU4Y2Y0ODk4OWQwZDlhYTZjOGQyOCcsXG4gICAgdW5zaWduZWQ6XG4gICAgICAnMHg0ODFhMWI3ODA2MDI4ODdiMzU4Y2Y0ODk4OWQwZDlhYTZjOGQyOGM1MDEwNDAwN2JkYjZhMDAwNzAwMDAwMDJhY2UwNWU3MDNhYTUwYjQ4YzBjY2NjZmM4YjQyNGY3YWFiOWExZTJjNDI0ZWQxMmU0NWQyMGIxZThmZmQwZDY1MmZhZjIzOWI0ZmYzOTYwNDBkNzA5YjMyODQwZDA1YjVlNzg4NTAwOWI5ZjE5OGIwMWZlMWEzOTVkM2UxMzA2JyxcbiAgfSxcbiAgdG9rZW5UcmFuc2Zlcjoge1xuICAgIHNpZ25lZDpcbiAgICAgICcweDU1MDQ4NDAwZTgxNjRiYmU4MTk2NGJlMjgyOTJkOTZmNjJjMmVmNjExN2Q5MTE2MzhmMzhhZTFiMWJiZTY5ZGYwYjZkZjEyNzAwZjliZTBmNTZmZGZiMmJiZGIxNDExMDYzZWIxNTgzYTVlOTI2NDQwODA5NWQ1MmQwN2M4YTUxMWNiNWUyNmU4MWMzM2QzOGUyOGMwOGM2OWI3M2RlMTE5YzNjYzg5YzlhYTY5OTA5YjUyOGUyZGMxYjYxMmUxZTNmMDk5ODNmMGI1NTAwMGMwMDI1MTQwMDAwMDAwMDA0MDAxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyMDBiYzZmN2VjODA4ZjM2MWMxMzUzYWI5ZGM4OGMzY2M1NGI5OGQ5ZWI2MGZlZDljMDYzZTY3YTQwOTI1YjhlZjYxMDA3ODA2MDI4ODdiMzU4Y2Y0ODk4OWQwZDlhYTZjOGQyODQwNDIwZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyMDAwMTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgdW5zaWduZWQ6XG4gICAgICAnMHhiOTAyMjUxNDAwMDAwMDAwMDQwMDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDIwMGJjNmY3ZWM4MDhmMzYxYzEzNTNhYjlkYzg4YzNjYzU0Yjk4ZDllYjYwZmVkOWMwNjNlNjdhNDA5MjViOGVmNjEwMDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4NDA0MjBmMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDIwMDAxMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTUwMDBjMDA3YmRiNmEwMDA3MDAwMDAwMmFjZTA1ZTcwM2FhNTBiNDhjMGNjY2NmYzhiNDI0ZjdhYWI5YTFlMmM0MjRlZDEyZTQ1ZDIwYjFlOGZmZDBkNjM5ZmU5NmYwZGFiNWE5NmUxMThkZTgzMGRjMWY1ZDAxMDVhZGVhZTNmMzIwOGNlOTVlOGUwMzQ5NDQ1NmUxOTEnLFxuICB9LFxuICByZWplY3RJbnN0cnVjdGlvbjoge1xuICAgIHNpZ25lZDpcbiAgICAgICcweDQ5MDI4NDAwZTgxNjRiYmU4MTk2NGJlMjgyOTJkOTZmNjJjMmVmNjExN2Q5MTE2MzhmMzhhZTFiMWJiZTY5ZGYwYjZkZjEyNzAwNGEwOGQ5Y2NiYjRiMTU3YzNkZjRiM2U3YThiYzYwMmU2ZjVmYWIwNzVhNGJmMzZiMjk5NjNhOWE4OTI2ZDE2YjI4MGMyZTUxNGU1MzRkNDJiY2YzMTczMzcyYzYxOTQ0OWM1OTVkNjE4M2E5ZmJlNWY5YThlZmU5YzViNjEwMDk2NTAzNDgwMDI1MGQxNDM3MDAwMDAwMDAwMDAwMTIwOGQ3ODUxZTY2OTgyNDlhZWE0MDc0MjcwMWVlMWVmNmNkY2NlZDI2MGE3YzQ5YzFjY2ExYTlkYjgzNjM0MjAwJyxcbiAgICB1bnNpZ25lZDpcbiAgICAgICcweGFjMjUwZDE0MzcwMDAwMDAwMDAwMDAxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyMDAyNTAxNGMwMDdiZGI2YTAwMDcwMDAwMDAyYWNlMDVlNzAzYWE1MGI0OGMwY2NjY2ZjOGI0MjRmN2FhYjlhMWUyYzQyNGVkMTJlNDVkMjBiMWU4ZmZkMGQ2ZmZlY2I0NjcyMjUxMTM3ZWYzOGM5YWNhN2MwMzFlNTc4YWUxM2MzNzZjMTY5OWZjOWNjMDk0YzI5ZTE2YzdkZicsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3Qgc3Rha2luZ1R4ID0ge1xuICBib25kOiB7XG4gICAgdW5zaWduZWQ6ICcweDljMDQxMTAwMDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4NDE5YzAwJyxcbiAgICBzaWduZWQ6XG4gICAgICAnMHgzNTAyODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMTAwMDY2NDI5YmRlN2Y3NWY1MGE3OTJkYmExMzdhNTI0NjExZGViZDU3MDE4YzkwOGY4ZGFhNmY5NGE2ZTI0NmFjNjBkODM5YjY5ZjBmN2RmNmY5MTY5MTNkOWRjY2I3MDlhZDU2ODU3Zjg2NmMzNzc1ZDdmZmNiNWQ3NjRmMzhmZTUwMjBjMDAxMTAwMDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4NDE5YzAwJyxcbiAgfSxcbiAgYm9uZEV4dHJhOiB7XG4gICAgdW5zaWduZWQ6XG4gICAgICAnMHhhZDAxODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMTIwMTE5OWE0M2U4ZWU5ZmVjNzc2YWMwMDQ1MTIwZTU0YjYxZWRkNGRhOGI5NDk5OTM3NzJjN2QwMTg0ZTY4MmE1ZmQzZTJmNjRlMDE2NGExMGI5ZmY4Mzc5MjhjOGI2NTgzOThiMjkyMDEyYmFiNWI3YTM3N2U2NTRhMzAyYjgxNzUwMTA4MDAxMTAxYTEwZicsXG4gICAgc2lnbmVkOlxuICAgICAgJzB4YWQwMTg0MDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4MDEyMDExOTlhNDNlOGVlOWZlYzc3NmFjMDA0NTEyMGU1NGI2MWVkZDRkYThiOTQ5OTkzNzcyYzdkMDE4NGU2ODJhNWZkM2UyZjY0ZTAxNjRhMTBiOWZmODM3OTI4YzhiNjU4Mzk4YjI5MjAxMmJhYjViN2EzNzdlNjU0YTMwMmI4MTc1MDEwODAwMTEwMWExMGYnLFxuICB9LFxuICB1bmJvbmQ6IHtcbiAgICB1bnNpZ25lZDogJzB4MTEwMjAyMDkzZDAwJyxcbiAgICBzaWduZWQ6XG4gICAgICAnMHhiNTAxODQwMDFlZDczZGZjMzBmN2IxMzU5ZDkyMDA0ZDY5NTRlYTQ3YTFlNDQ3ZjgxM2Y2MzdlYzQ0MzAyYTlmNmQ3NzNkNGEwMTA2NGI3Zjc1ZTRiNDBlMTVhYmFhZGNkYjY5NGQ0ZDI1OGU0YzJmMTkyMjdjZTdjZjYzZjJiYWQ0YjY5Y2RhMWU1ZjYzMDdmNGVmNGY3OWViNzY0MmE2YTg1ODAxYTgwZjQ3N2Q3ZDUwZDI2YzE5Y2Y2NDNlMmZjYTkzMTRkNzgwMjUwMzNjMDAxMTAyMDIwOTNkMDAnLFxuICB9LFxuICBiYXRjaDoge1xuICAgIGJvbmRBbmROb21pbmF0ZToge1xuICAgICAgdW5zaWduZWQ6XG4gICAgICAgICcweDM5MDEwNDI5MDIwODExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAxMTA1MDQwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTEnLFxuICAgICAgc2lnbmVkOlxuICAgICAgICAnMHhkMTAyODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMTgyNzA5NGU1YjJkODkzNzE0YjViNTk0ZDliYWVmOGIwMzlmYTFhN2ZjOTIwZDU3NzA3ZDEzYmM4ZmE3Y2Y3MWM3NmIyNmNjNjY1MWMwYzA3NzM1YzQwOTBjNGNmYWY2ZjIyNmUwNWQ5MmE0MDdmZWY4NDAyNTYyZGNhZDc3MTg4ZjUwMjE0MDAyOTAyMDgxMTAwMDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4NDE5YzAwMTEwNTA0MDAwMjUyMzdmZGJlYTgyZjA3NTI5NjQxNmZhMDk2ZDNiOTgwN2M0Zjg3NjNkN2MzNDc0ZmRkNzQ3MDA3Mzc5ODExJyxcbiAgICB9LFxuICAgIGJvbmRPbmx5OiB7XG4gICAgICB1bnNpZ25lZDogJzB4YTgwNDI5MDAwNDExMDAwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1Mzg0MTljMDAnLFxuICAgICAgc2lnbmVkOlxuICAgICAgICAnMHg0MTAyODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMWZlMDk5ZWU2ODBiNzIxZWQwYjE0NTMzZWYzYTAyODI5ZjM0MjIwMWNjZjIzYjZmYTNmN2I4MGNjOGMwMDI0NGY2MzQ0M2QxNjQxMWI2NjcxMTRkMTU2ZmIxNGI0YjNjOTM5ZGJlMzczODg3YWExNTY5NTc3YmZkYTE1ZjU2MDhmZjUwMjE0MDAyOTAwMDQxMTAwMDBiZWMxMTBlYWI0ZDMyN2QzYjJiNmJiNjhlODg4NjU0YTQ3NDY5NGQzOTM1Y2UzNWJkMzkyNmU0YmM3ZWJkNTM4NDE5YzAwJyxcbiAgICB9LFxuICAgIG5vbWluYXRlT25seToge1xuICAgICAgdW5zaWduZWQ6ICcweGEwMDQyOTAwMDQxMTA1MDQwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTEnLFxuICAgICAgc2lnbmVkOlxuICAgICAgICAnMHgzOTAyODQwMGJlYzExMGVhYjRkMzI3ZDNiMmI2YmI2OGU4ODg2NTRhNDc0Njk0ZDM5MzVjZTM1YmQzOTI2ZTRiYzdlYmQ1MzgwMWE2Njk0YThkMTBhZmE0ZmY4NDYyMWRlMzZlNmI0NjhhZDMwOTcxMjYxYjc1MjQzNTk2NmNhMDBmNTA1Nzg1MDVmYzFmYjQ5NTFkMTBlYmJiOWJjZThiNWZhN2FhZjA0NzE5NWY1OGVhNzQxOGRhMGIyMGZiMjc5NjM2MjAwMzg0ZjUwMjE0MDAyOTAwMDQxMTA1MDQwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTEnLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vKiogdjggdGVzdG5ldCBzYW5kYm94IOKAlCBibG9jayAyNDgyOTEzNSwgc3Rha2VWOC5janMgLS1iYXRjaCAqL1xuZXhwb3J0IGNvbnN0IHN0YWtpbmdUeFY4ID0ge1xuICBzYW5kYm94OiB7XG4gICAgc3Rhc2g6ICc1Q0xZdnh3eDRQVVM2NzhNTnVoTko5RWZwVVU5dXRyWUN6OVdWeG92YWM0dTlBWUQnLFxuICAgIHZhbGlkYXRvcjogJzVDN2tOcFN2VnIyMloxWDZnVkFVamZhaFNKZlNwdnc0REhOb1k3dVVIcExmRUpaUicsXG4gICAgYm9uZEFtb3VudDogJzEwMDAwMDAwJyxcbiAgICBwYXllZTogJ1N0YWtlZCcsXG4gICAgc3BlY1ZlcnNpb246IDgwMDAwMDAsXG4gICAgdHJhbnNhY3Rpb25WZXJzaW9uOiA4LFxuICAgIGJsb2NrSGVpZ2h0OiAyNDgyOTEzNSxcbiAgICBibG9ja0hhc2g6ICcweGZlNjRmMGYwYmU1MWZjNzkxYjEyZGNmODFkM2FkODJhNjgyNzE5ZjQ5ODYzOWRkZTk1NmJhYWY0NzNhNTdlOGMnLFxuICAgIHJlZmVyZW5jZUJsb2NrOiAnMHg1MmVhNzFlNGZlYzY4YzQ5ZjhlNjUxMWM3MjA5YmM2YWI1NDExNTQ3MzA4YTM3NjQ4ZDEyNmY5ZTAwNDFhNDIwJyxcbiAgICBub25jZTogMTg5LFxuICAgIGZpcnN0VmFsaWQ6IDI0ODI5MTMyLFxuICAgIGJvbmRlZEV2ZW50OiBbJzVDTFl2eHd4NFBVUzY3OE1OdWhOSjlFZnBVVTl1dHJZQ3o5V1Z4b3ZhYzR1OUFZRCcsIDEwMDAwMDAwXSxcbiAgfSxcbiAgYmF0Y2g6IHtcbiAgICBib25kQW5kTm9taW5hdGU6IHtcbiAgICAgIC8vIGZ1bGwgdXRpbGl0eS5iYXRjaEFsbCBtZXRob2QgaGV4IGZyb20gc2FuZGJveCAoNDYgYnl0ZXMpXG4gICAgICBjYWxsSGV4OiAnMHgyOTAyMDgxMTAwMDI1YTYyMDIwMDExMDUwNDAwMDI1MjM3ZmRiZWE4MmYwNzUyOTY0MTZmYTA5NmQzYjk4MDdjNGY4NzYzZDdjMzQ3NGZkZDc0NzAwNzM3OTgxMScsXG4gICAgICAvLyBmdWxsIEV4dHJpbnNpY1BheWxvYWQudG9VOGEoeyBtZXRob2Q6IHRydWUgfSkg4oCUIDEyNSBieXRlc1xuICAgICAgZXh0cmluc2ljUGF5bG9hZEhleDpcbiAgICAgICAgJzB4MjkwMjA4MTEwMDAyNWE2MjAyMDAxMTA1MDQwMDAyNTIzN2ZkYmVhODJmMDc1Mjk2NDE2ZmEwOTZkM2I5ODA3YzRmODc2M2Q3YzM0NzRmZGQ3NDcwMDczNzk4MTFjNTAwZjUwMjAwMDAwMDEyN2EwMDA4MDAwMDAwMmFjZTA1ZTcwM2FhNTBiNDhjMGNjY2NmYzhiNDI0ZjdhYWI5YTFlMmM0MjRlZDEyZTQ1ZDIwYjFlOGZmZDBkNjUyZWE3MWU0ZmVjNjhjNDlmOGU2NTExYzcyMDliYzZhYjU0MTE1NDczMDhhMzc2NDhkMTI2ZjllMDA0MWE0MjAwMCcsXG4gICAgICBwYXlsb2FkTGVuZ3RoOiAxMjUsXG4gICAgICBzcGVjVmVyc2lvbkxFOiAnMDAxMjdhMDAnLFxuICAgICAgdHhWZXJzaW9uTEU6ICcwODAwMDAwMCcsXG4gICAgICB0YWlsQWZ0ZXJSZWZCbG9jazogJzAwMDAnLFxuICAgIH0sXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3Qgbm9taW5hdGVUeCA9IHtcbiAgdW5zaWduZWQ6XG4gICAgJzB4MTEwNTA4MDAwMjUyMzdmZGJlYTgyZjA3NTI5NjQxNmZhMDk2ZDNiOTgwN2M0Zjg3NjNkN2MzNDc0ZmRkNzQ3MDA3Mzc5ODExMDA2MGM4MTlhMTAzYjU2Njc5OTQ3YzM5OTI0YTdjYzYxNmNiNzhlODRkYTZjNTMwM2ViZTE1MjFiM2ZlYjYyODEzJyxcbiAgc2lnbmVkOlxuICAgICcweGIxMDI4NDAwMWVkNzNkZmMzMGY3YjEzNTlkOTIwMDRkNjk1NGVhNDdhMWU0NDdmODEzZjYzN2VjNDQzMDJhOWY2ZDc3M2Q0YTAxODIyYjZmMzg5NDhjOTcyNzY0YWZlNTNkZjI2MTIyMWRmZDY1Zjc5YmQ1MTUxN2Y0Mzg0ZDU2NjlhMzZhYWQ2YTc4MjkwY2M0YzZhNjc4YzNlYmU2OTg3OTkyMzJhMDg3OTJjZDA2M2UwNTFhNjQyZDM1NWJkYWExNjYyMjVkOGVjNTAzM2MwMDExMDUwODAwMDI1MjM3ZmRiZWE4MmYwNzUyOTY0MTZmYTA5NmQzYjk4MDdjNGY4NzYzZDdjMzQ3NGZkZDc0NzAwNzM3OTgxMTAwNjBjODE5YTEwM2I1NjY3OTk0N2MzOTkyNGE3Y2M2MTZjYjc4ZTg0ZGE2YzUzMDNlYmUxNTIxYjNmZWI2MjgxMycsXG59O1xuXG5leHBvcnQgY29uc3Qgbm9taW5hdGVTZW5kZXIgPSAnNUNtOUVYS3djREROVk5ERlNVbnNwNDZZQ0E3UW1NVkFhUktTRmVlQ1VlZDFKYml4JztcblxuZXhwb3J0IGNvbnN0IG5vbWluYXRlVmFsaWRhdG9ycyA9IFtcbiAgJzVDN2tOcFN2VnIyMloxWDZnVkFVamZhaFNKZlNwdnc0REhOb1k3dVVIcExmRUpaUicsXG4gICc1RUZidHdEQlF1NjRXalVHcUFnQzNrdWFpSDg2RTM0Q0h0cXhiTjd6QWd3d1QyY2cnLFxuXTtcblxuZXhwb3J0IGNvbnN0IHsgdHhWZXJzaW9uLCBzcGVjVmVyc2lvbiwgZ2VuZXNpc0hhc2gsIGNoYWluTmFtZSwgc3BlY05hbWUgfSA9IE5ldHdvcmtzLnRlc3QucG9seXg7XG5leHBvcnQgY29uc3Qge1xuICB0eFZlcnNpb246IG1haW5UeFZlcnNpb24sXG4gIHNwZWNWZXJzaW9uOiBtYWluU3BlY1ZlcnNpb24sXG4gIGdlbmVzaXNIYXNoOiBtYWluR2VuZXNpc0hhc2gsXG4gIGNoYWluTmFtZTogbWFpbkNoYWluTmFtZSxcbiAgc3BlY05hbWU6IG1haW5TcGVjTmFtZSxcbn0gPSBOZXR3b3Jrcy5tYWluLnBvbHl4O1xuIl19
|
|
@@ -197,6 +197,35 @@ describe('Polyx Batch Builder', function () {
|
|
|
197
197
|
}, /Invalid transaction type/);
|
|
198
198
|
});
|
|
199
199
|
});
|
|
200
|
+
describe('signablePayload (Substrate 256-byte blake2 rule)', function () {
|
|
201
|
+
const buildBatchTx = async (numValidators) => {
|
|
202
|
+
const batchBuilder = factory.getBatchBuilder();
|
|
203
|
+
batchBuilder
|
|
204
|
+
.amount(testAmount)
|
|
205
|
+
.controller({ address: controllerAddress })
|
|
206
|
+
.payee('Staked')
|
|
207
|
+
.validators(Array(numValidators).fill(validatorAddress))
|
|
208
|
+
.sender({ address: senderAddress })
|
|
209
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
210
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
211
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
|
|
212
|
+
batchBuilder.material(utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type));
|
|
213
|
+
return batchBuilder.build();
|
|
214
|
+
};
|
|
215
|
+
it('should return raw payload bytes when the batch extrinsic is at most 256 bytes', async () => {
|
|
216
|
+
// bond + nominate with a single validator stays under the 256-byte threshold
|
|
217
|
+
const tx = await buildBatchTx(1);
|
|
218
|
+
const signablePayload = tx.signablePayload;
|
|
219
|
+
signablePayload.length.should.be.belowOrEqual(256);
|
|
220
|
+
signablePayload.length.should.not.equal(32);
|
|
221
|
+
});
|
|
222
|
+
it('should return the 32-byte blake2_256 hash when the batch extrinsic exceeds 256 bytes', async () => {
|
|
223
|
+
// bond + nominate with many validators pushes the batch over the 256-byte threshold
|
|
224
|
+
const tx = await buildBatchTx(6);
|
|
225
|
+
const signablePayload = tx.signablePayload;
|
|
226
|
+
should_1.default.equal(signablePayload.length, 32);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
200
229
|
describe('From Raw Transaction', function () {
|
|
201
230
|
it('should rebuild from real batch transaction', async () => {
|
|
202
231
|
// First build a transaction to get a real raw transaction
|
|
@@ -260,4 +289,4 @@ describe('Polyx Batch Builder', function () {
|
|
|
260
289
|
});
|
|
261
290
|
});
|
|
262
291
|
});
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCw0Q0FBdUM7QUFDdkMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBd0Y7QUFDeEYsOENBQWtEO0FBRWxELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElB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QUFDLENBQUM7aUJBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7aUJBQ2hELGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRS9ELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekQsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvZGVkU2lnbmluZ1BheWxvYWQgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlJztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIEJhdGNoQnVpbGRlciwgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXRjaEFyZ3MsIEJvbmRBcmdzLCBOb21pbmF0ZUFyZ3MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgYWNjb3VudHMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmZ1bmN0aW9uIGNyZWF0ZU1vY2tUcmFuc2FjdGlvbih0eERhdGE6IHN0cmluZyk6IFBhcnRpYWw8VHJhbnNhY3Rpb24+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogJzEyMycsXG4gICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLkJhdGNoLFxuICAgIHRvQnJvYWRjYXN0Rm9ybWF0OiAoKSA9PiB0eERhdGEsXG4gICAgaW5wdXRzOiBbXSxcbiAgICBvdXRwdXRzOiBbXSxcbiAgICBzaWduYXR1cmU6IFsnbW9jay1zaWduYXR1cmUnXSxcbiAgICB0b0pzb246ICgpID0+ICh7XG4gICAgICBpZDogJzEyMycsXG4gICAgICB0eXBlOiAnQmF0Y2gnLFxuICAgICAgc2VuZGVyOiBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzLFxuICAgICAgcmVmZXJlbmNlQmxvY2s6ICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnLFxuICAgICAgYmxvY2tOdW1iZXI6IDEwMCxcbiAgICAgIGdlbmVzaXNIYXNoOiAnMHgnLFxuICAgICAgbm9uY2U6IDEsXG4gICAgICB0aXA6IDAsXG4gICAgICBzcGVjVmVyc2lvbjogMSxcbiAgICAgIHRyYW5zYWN0aW9uVmVyc2lvbjogMSxcbiAgICAgIGNoYWluTmFtZTogJ1BvbHltZXNoJyxcbiAgICAgIGlucHV0czogW10sXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICB9KSxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ1BvbHl4IEJhdGNoIEJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBidWlsZGVyOiBCYXRjaEJ1aWxkZXI7XG4gIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoJ3Rwb2x5eCcpKTtcblxuICBjb25zdCBzZW5kZXJBZGRyZXNzID0gYWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcztcbiAgY29uc3QgY29udHJvbGxlckFkZHJlc3MgPSBhY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzO1xuICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gJzVDN2tOcFN2VnIyMloxWDZnVkFVamZhaFNKZlNwdnc0REhOb1k3dVVIcExmRUpaUic7XG4gIGNvbnN0IHRlc3RBbW91bnQgPSAnMTAwMDAnO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzdGFraW5nIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmFtb3VudCgnLTEnKSwgL1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVyby8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmFtb3VudCgnMTAwMCcpKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBjb250cm9sbGVyIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlQWRkcmVzcycpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiAnaW52YWxpZC1hZGRyZXNzJyB9KSwgL2lzIG5vdCBhIHdlbGwtZm9ybWVkLyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZUFkZHJlc3MnKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFsnaW52YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCb25kIGFuZCBOb21pbmF0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGJvbmQgYW5kIG5vbWluYXRlIGFyZ3MgdG9nZXRoZXInLCAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSk7XG5cbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpO1xuICAgICAgfSk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyLmFtb3VudCh0ZXN0QW1vdW50KS5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSkucGF5ZWUoJ1N0YWtlZCcpO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0sIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9LCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIGJhdGNoIHRyYW5zYWN0aW9uIHdpdGggYm90aCBib25kIGFuZCBub21pbmF0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIGNvbnN0IG1vY2tUeCA9IGNyZWF0ZU1vY2tUcmFuc2FjdGlvbihzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnVuc2lnbmVkKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuXG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoYnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBWYWxpZGF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYnVpbGQsIGRlY29kZSwgYW5kIHZhbGlkYXRlIGEgcmVhbCBiYXRjaCBzdGFraW5nIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIHdpdGggcmVhbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWwgZm9yIGRlY29kaW5nXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgLy8gQnVpbGQgdGhlIGFjdHVhbCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IGJ1aWxkZXJbJ2J1aWxkVHJhbnNhY3Rpb24nXSgpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBidWlsZGVyWydfcmVnaXN0cnknXTtcblxuICAgICAgLy8gRGVjb2RlIHRoZSBhY3R1YWwgYnVpbHQgdHJhbnNhY3Rpb25cbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIHN0cnVjdHVyZVxuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QubmFtZSwgJ2JhdGNoQWxsJyk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQsICd1dGlsaXR5Jyk7XG5cbiAgICAgIGNvbnN0IGJhdGNoQXJncyA9IGRlY29kZWRUeC5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIEJhdGNoQXJncztcbiAgICAgIHNob3VsZC5leGlzdChiYXRjaEFyZ3MuY2FsbHMpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJhdGNoQXJncy5jYWxscy5sZW5ndGgsIDIpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBmaXJzdCBjYWxsIGlzIGJvbmRcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbCA9IGJhdGNoQXJncy5jYWxsc1swXTtcbiAgICAgIGNvbnN0IGZpcnN0Q2FsbE1ldGhvZCA9IHV0aWxzLmRlY29kZU1ldGhvZE5hbWUoZmlyc3RDYWxsLCByZWdpc3RyeSk7XG4gICAgICBzaG91bGQuZXF1YWwoZmlyc3RDYWxsTWV0aG9kLCAnYm9uZCcpO1xuXG4gICAgICBjb25zdCBib25kQXJncyA9IGZpcnN0Q2FsbC5hcmdzIGFzIHVua25vd24gYXMgQm9uZEFyZ3M7XG4gICAgICBzaG91bGQuZXF1YWwoYm9uZEFyZ3MudmFsdWUsIHRlc3RBbW91bnQpO1xuICAgICAgLy8gQ29udHJvbGxlciBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIGlkIHByb3BlcnR5XG4gICAgICBjb25zdCBjb250cm9sbGVyVmFsdWUgPVxuICAgICAgICB0eXBlb2YgYm9uZEFyZ3MuY29udHJvbGxlciA9PT0gJ3N0cmluZycgPyBib25kQXJncy5jb250cm9sbGVyIDogKGJvbmRBcmdzLmNvbnRyb2xsZXIgYXMgeyBpZDogc3RyaW5nIH0pLmlkO1xuICAgICAgc2hvdWxkLmVxdWFsKGNvbnRyb2xsZXJWYWx1ZSwgY29udHJvbGxlckFkZHJlc3MpO1xuICAgICAgLy8gUGF5ZWUgY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvYmplY3Qgd2l0aCBzdGFrZWQgcHJvcGVydHlcbiAgICAgIGNvbnN0IHBheWVlVmFsdWUgPVxuICAgICAgICB0eXBlb2YgYm9uZEFyZ3MucGF5ZWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBib25kQXJncy5wYXllZVxuICAgICAgICAgIDogKGJvbmRBcmdzLnBheWVlIGFzIHsgc3Rha2VkPzogbnVsbCB9KS5zdGFrZWQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gJ1N0YWtlZCdcbiAgICAgICAgICA6IGJvbmRBcmdzLnBheWVlO1xuICAgICAgc2hvdWxkLmVxdWFsKHBheWVlVmFsdWUsICdTdGFrZWQnKTtcblxuICAgICAgLy8gVmFsaWRhdGUgc2Vjb25kIGNhbGwgaXMgbm9taW5hdGVcbiAgICAgIGNvbnN0IHNlY29uZENhbGwgPSBiYXRjaEFyZ3MuY2FsbHNbMV07XG4gICAgICBjb25zdCBzZWNvbmRDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShzZWNvbmRDYWxsLCByZWdpc3RyeSk7XG4gICAgICBzaG91bGQuZXF1YWwoc2Vjb25kQ2FsbE1ldGhvZCwgJ25vbWluYXRlJyk7XG5cbiAgICAgIGNvbnN0IG5vbWluYXRlQXJncyA9IHNlY29uZENhbGwuYXJncyBhcyB1bmtub3duIGFzIE5vbWluYXRlQXJncztcbiAgICAgIC8vIFRhcmdldHMgY2FuIGJlIGVpdGhlciBzdHJpbmdzIG9yIG9iamVjdHMgd2l0aCBpZCBwcm9wZXJ0eVxuICAgICAgY29uc3QgdGFyZ2V0VmFsdWVzID0gbm9taW5hdGVBcmdzLnRhcmdldHMubWFwKCh0YXJnZXQpID0+XG4gICAgICAgIHR5cGVvZiB0YXJnZXQgPT09ICdzdHJpbmcnID8gdGFyZ2V0IDogKHRhcmdldCBhcyB7IGlkOiBzdHJpbmcgfSkuaWRcbiAgICAgICk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHRhcmdldFZhbHVlcywgW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgLy8gTm93IHZhbGlkYXRlIHVzaW5nIHRoZSBidWlsZGVyJ3MgdmFsaWRhdGlvbiBtZXRob2RcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGludmFsaWQgYmF0Y2ggdHJhbnNhY3Rpb24gd2hlbiBidWlsdCcsICgpID0+IHtcbiAgICAgIC8vIFRyeSB0byBidWlsZCBhIGJhdGNoIHdpdGggb25seSBib25kIChtaXNzaW5nIG5vbWluYXRlKVxuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbFxuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgLy8gU2hvdWxkIHRocm93IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIHdpdGhvdXQgdmFsaWRhdG9yc1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXJbJ2J1aWxkVHJhbnNhY3Rpb24nXSgpO1xuICAgICAgfSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IHZhbGlkYXRpb24gb2Ygbm9uLWJhdGNoIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgbW9jayBkZWNvZGVkIHRyYW5zYWN0aW9uIHdpdGggd3JvbmcgbWV0aG9kIG5hbWVcbiAgICAgIGNvbnN0IG1vY2tEZWNvZGVkVHg6IERlY29kZWRTaWduaW5nUGF5bG9hZCA9IHtcbiAgICAgICAgbWV0aG9kOiB7XG4gICAgICAgICAgbmFtZTogJ2JvbmQnLFxuICAgICAgICAgIHBhbGxldDogJ3N0YWtpbmcnLFxuICAgICAgICAgIGFyZ3M6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSBhcyB1bmtub3duIGFzIERlY29kZWRTaWduaW5nUGF5bG9hZDtcblxuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24obW9ja0RlY29kZWRUeCk7XG4gICAgICB9LCAvSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIFJhdyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSByZWFsIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY3JlYXRlIHByb3Blcmx5IGNvbmZpZ3VyZWQgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBiYXRjaCB0cmFuc2FjdGlvbiB3aXRoIGN1c3RvbSByZXBsYXkgcHJvdGVjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiA0MDAwLCBtYXhEdXJhdGlvbjogMTAwIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgyNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRlJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oJ2N1c3RvbS10eC1mb3JtYXQnKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hTdGFraW5nQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvYmF0Y2hTdGFraW5nQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCw0Q0FBdUM7QUFDdkMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBd0Y7QUFDeEYsOENBQWtEO0FBRWxELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLEtBQUs7UUFDM0IsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtRQUMvQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7UUFDN0IsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDYixFQUFFLEVBQUUsS0FBSztZQUNULElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87WUFDakMsY0FBYyxFQUFFLG9FQUFvRTtZQUNwRixXQUFXLEVBQUUsR0FBRztZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsQ0FBQztZQUNSLEdBQUcsRUFBRSxDQUFDO1lBQ04sV0FBVyxFQUFFLENBQUM7WUFDZCxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0tBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRW5FLE1BQU0sYUFBYSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNoRCxNQUFNLGlCQUFpQixHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNwRCxNQUFNLGdCQUFnQixHQUFHLGtEQUFrRCxDQUFDO0lBQzVFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUUzQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRTtZQUN4QyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLGdDQUFnQyxDQUFDLENBQUM7WUFDNUUsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xELGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xELGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDaEcsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RSxlQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7WUFDN0MsTUFBTSxHQUFHLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNsRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDckYsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLGVBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7UUFDNUIsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxPQUFPO2lCQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQ2xCLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNmLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUVsQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7WUFFckQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUVwQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBRXZDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxFQUFFLGdEQUFnRCxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDNUUsT0FBTztpQkFDSixNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUNsQixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDZixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0UsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVqQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDekQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFO1FBQ2pDLEVBQUUsQ0FBQyxxRUFBcUUsRUFBRSxHQUFHLEVBQUU7WUFDN0UsNkNBQTZDO1lBQzdDLE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0QsK0JBQStCO1lBQy9CLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMzQix3Q0FBd0M7WUFDeEMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdEMsc0NBQXNDO1lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUEsMkJBQU0sRUFBQyxVQUFVLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDOUIsUUFBUSxFQUFFLFFBQVE7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsNkNBQTZDO1lBQzdDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELGdCQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBRWpELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBNEIsQ0FBQztZQUNoRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFeEMsOEJBQThCO1lBQzlCLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsTUFBTSxlQUFlLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQTJCLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN6QyxrRUFBa0U7WUFDbEUsTUFBTSxlQUFlLEdBQ25CLE9BQU8sUUFBUSxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxVQUE2QixDQUFDLEVBQUUsQ0FBQztZQUM3RyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNqRCxpRUFBaUU7WUFDakUsTUFBTSxVQUFVLEdBQ2QsT0FBTyxRQUFRLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDaEIsQ0FBQyxDQUFFLFFBQVEsQ0FBQyxLQUEyQixDQUFDLE1BQU0sS0FBSyxTQUFTO29CQUM1RCxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNyQixnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFbkMsbUNBQW1DO1lBQ25DLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRTNDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUErQixDQUFDO1lBQ2hFLDREQUE0RDtZQUM1RCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3ZELE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBRSxNQUF5QixDQUFDLEVBQUUsQ0FDcEUsQ0FBQztZQUNGLGdCQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUVuRCxxREFBcUQ7WUFDckQsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO2dCQUN2QixPQUFPLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7WUFDNUQseURBQXlEO1lBQ3pELE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0Qsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQix1REFBdUQ7WUFDdkQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUMsRUFBRSxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCwyREFBMkQ7WUFDM0QsTUFBTSxhQUFhLEdBQTBCO2dCQUMzQyxNQUFNLEVBQUU7b0JBQ04sSUFBSSxFQUFFLE1BQU07b0JBQ1osTUFBTSxFQUFFLFNBQVM7b0JBQ2pCLElBQUksRUFBRSxFQUFFO2lCQUNUO2FBQ2tDLENBQUM7WUFFdEMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixPQUFPLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEQsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxrREFBa0QsRUFBRTtRQUMzRCxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsYUFBcUIsRUFBRSxFQUFFO1lBQ25ELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxZQUFZO2lCQUNULE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQ2xCLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO2lCQUMxQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNmLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7aUJBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3Riw2RUFBNkU7WUFDN0UsTUFBTSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUMzQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0ZBQXNGLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEcsb0ZBQW9GO1lBQ3BGLE1BQU0sRUFBRSxHQUFHLE1BQU0sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFO1FBQy9CLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUMxRCwwREFBMEQ7WUFDMUQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xELGVBQWU7aUJBQ1osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0Qsa0JBQWtCO1lBQ2xCLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuQyxtREFBbUQ7WUFDbkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFeEMsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM3QyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFMUIsMkRBQTJEO1lBQzNELGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUM1RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0RBQWdELEVBQUU7UUFDekQsRUFBRSxDQUFDLHFCQUFxQixFQUFFLEtBQUs7WUFDN0IsT0FBTztpQkFDSixNQUFNLENBQUMsVUFBVSxDQUFDO2lCQUNsQixVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztpQkFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztpQkFDZixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lCQUM5QixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxxQkFBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0UsZUFBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUU3RCxNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLO1lBQzNELE9BQU87aUJBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDbEIsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUM7aUJBQzFDLEtBQUssQ0FBQyxRQUFRLENBQUM7aUJBQ2YsVUFBVSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztpQkFDOUIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQztpQkFDaEQsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFL0QsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN6RCxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBcUIsQ0FBQyxDQUFDO1lBRTdELE1BQU0sRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29kZWRTaWduaW5nUGF5bG9hZCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgQmF0Y2hCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhdGNoQXJncywgQm9uZEFyZ3MsIE5vbWluYXRlQXJncyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc3Rha2luZ1R4IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcblxuZnVuY3Rpb24gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHR4RGF0YTogc3RyaW5nKTogUGFydGlhbDxUcmFuc2FjdGlvbj4ge1xuICByZXR1cm4ge1xuICAgIGlkOiAnMTIzJyxcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuQmF0Y2gsXG4gICAgdG9Ccm9hZGNhc3RGb3JtYXQ6ICgpID0+IHR4RGF0YSxcbiAgICBpbnB1dHM6IFtdLFxuICAgIG91dHB1dHM6IFtdLFxuICAgIHNpZ25hdHVyZTogWydtb2NrLXNpZ25hdHVyZSddLFxuICAgIHRvSnNvbjogKCkgPT4gKHtcbiAgICAgIGlkOiAnMTIzJyxcbiAgICAgIHR5cGU6ICdCYXRjaCcsXG4gICAgICBzZW5kZXI6IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcsXG4gICAgICBibG9ja051bWJlcjogMTAwLFxuICAgICAgZ2VuZXNpc0hhc2g6ICcweCcsXG4gICAgICBub25jZTogMSxcbiAgICAgIHRpcDogMCxcbiAgICAgIHNwZWNWZXJzaW9uOiAxLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiAxLFxuICAgICAgY2hhaW5OYW1lOiAnUG9seW1lc2gnLFxuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgIH0pLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUG9seXggQmF0Y2ggQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJ1aWxkZXI6IEJhdGNoQnVpbGRlcjtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHBvbHl4JykpO1xuXG4gIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzO1xuICBjb25zdCBjb250cm9sbGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQyLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSAnNUM3a05wU3ZWcjIyWjFYNmdWQVVqZmFoU0pmU3B2dzRESE5vWTd1VUhwTGZFSlpSJztcbiAgY29uc3QgdGVzdEFtb3VudCA9ICcxMDAwMCc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHN0YWtpbmcgYW1vdW50JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZVZhbHVlJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuYW1vdW50KCctMScpLCAvVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvLyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuYW1vdW50KCcxMDAwJykpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGNvbnRyb2xsZXIgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVBZGRyZXNzJyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuY29udHJvbGxlcih7IGFkZHJlc3M6ICdpbnZhbGlkLWFkZHJlc3MnIH0pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHZhbGlkYXRvciBhZGRyZXNzZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlQWRkcmVzcycpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydpbnZhbGlkLWFkZHJlc3MnXSksIC9pcyBub3QgYSB3ZWxsLWZvcm1lZC8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0JvbmQgYW5kIE5vbWluYXRlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYm9uZCBhbmQgbm9taW5hdGUgYXJncyB0b2dldGhlcicsICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKTtcblxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCk7XG4gICAgICB9KTtcblxuICAgICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG5cbiAgICAgIGJ1aWxkZXIuYW1vdW50KHRlc3RBbW91bnQpLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KS5wYXllZSgnU3Rha2VkJyk7XG5cbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpO1xuICAgICAgfSwgL211c3QgaW5jbHVkZSBib3RoIGJvbmQgYW5kIG5vbWluYXRlIG9wZXJhdGlvbnMvKTtcblxuICAgICAgYnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG5cbiAgICAgIGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0sIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgYmF0Y2ggdHJhbnNhY3Rpb24gd2l0aCBib3RoIGJvbmQgYW5kIG5vbWluYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldEFtb3VudCgpLCB0ZXN0QW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyLmdldENvbnRyb2xsZXIoKSwgY29udHJvbGxlckFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0UGF5ZWUoKSwgJ1N0YWtlZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3NdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9uIFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCwgZGVjb2RlLCBhbmQgdmFsaWRhdGUgYSByZWFsIGJhdGNoIHN0YWtpbmcgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICAvLyBCdWlsZCB0aGUgdHJhbnNhY3Rpb24gd2l0aCByZWFsIHBhcmFtZXRlcnNcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxMDAgfSk7XG5cbiAgICAgIC8vIFNldCB1cCBtYXRlcmlhbCBmb3IgZGVjb2RpbmdcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICAvLyBCdWlsZCB0aGUgYWN0dWFsIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IGJ1aWxkZXJbJ19yZWdpc3RyeSddO1xuXG4gICAgICAvLyBEZWNvZGUgdGhlIGFjdHVhbCBidWlsdCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHVuc2lnbmVkVHgsIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IG1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lLCAnYmF0Y2hBbGwnKTtcbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLnBhbGxldCwgJ3V0aWxpdHknKTtcblxuICAgICAgY29uc3QgYmF0Y2hBcmdzID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIHVua25vd24gYXMgQmF0Y2hBcmdzO1xuICAgICAgc2hvdWxkLmV4aXN0KGJhdGNoQXJncy5jYWxscyk7XG4gICAgICBzaG91bGQuZXF1YWwoYmF0Y2hBcmdzLmNhbGxzLmxlbmd0aCwgMik7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGZpcnN0IGNhbGwgaXMgYm9uZFxuICAgICAgY29uc3QgZmlyc3RDYWxsID0gYmF0Y2hBcmdzLmNhbGxzWzBdO1xuICAgICAgY29uc3QgZmlyc3RDYWxsTWV0aG9kID0gdXRpbHMuZGVjb2RlTWV0aG9kTmFtZShmaXJzdENhbGwsIHJlZ2lzdHJ5KTtcbiAgICAgIHNob3VsZC5lcXVhbChmaXJzdENhbGxNZXRob2QsICdib25kJyk7XG5cbiAgICAgIGNvbnN0IGJvbmRBcmdzID0gZmlyc3RDYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBCb25kQXJncztcbiAgICAgIHNob3VsZC5lcXVhbChib25kQXJncy52YWx1ZSwgdGVzdEFtb3VudCk7XG4gICAgICAvLyBDb250cm9sbGVyIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggaWQgcHJvcGVydHlcbiAgICAgIGNvbnN0IGNvbnRyb2xsZXJWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBib25kQXJncy5jb250cm9sbGVyID09PSAnc3RyaW5nJyA/IGJvbmRBcmdzLmNvbnRyb2xsZXIgOiAoYm9uZEFyZ3MuY29udHJvbGxlciBhcyB7IGlkOiBzdHJpbmcgfSkuaWQ7XG4gICAgICBzaG91bGQuZXF1YWwoY29udHJvbGxlclZhbHVlLCBjb250cm9sbGVyQWRkcmVzcyk7XG4gICAgICAvLyBQYXllZSBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIHN0YWtlZCBwcm9wZXJ0eVxuICAgICAgY29uc3QgcGF5ZWVWYWx1ZSA9XG4gICAgICAgIHR5cGVvZiBib25kQXJncy5wYXllZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IGJvbmRBcmdzLnBheWVlXG4gICAgICAgICAgOiAoYm9uZEFyZ3MucGF5ZWUgYXMgeyBzdGFrZWQ/OiBudWxsIH0pLnN0YWtlZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAnU3Rha2VkJ1xuICAgICAgICAgIDogYm9uZEFyZ3MucGF5ZWU7XG4gICAgICBzaG91bGQuZXF1YWwocGF5ZWVWYWx1ZSwgJ1N0YWtlZCcpO1xuXG4gICAgICAvLyBWYWxpZGF0ZSBzZWNvbmQgY2FsbCBpcyBub21pbmF0ZVxuICAgICAgY29uc3Qgc2Vjb25kQ2FsbCA9IGJhdGNoQXJncy5jYWxsc1sxXTtcbiAgICAgIGNvbnN0IHNlY29uZENhbGxNZXRob2QgPSB1dGlscy5kZWNvZGVNZXRob2ROYW1lKHNlY29uZENhbGwsIHJlZ2lzdHJ5KTtcbiAgICAgIHNob3VsZC5lcXVhbChzZWNvbmRDYWxsTWV0aG9kLCAnbm9taW5hdGUnKTtcblxuICAgICAgY29uc3Qgbm9taW5hdGVBcmdzID0gc2Vjb25kQ2FsbC5hcmdzIGFzIHVua25vd24gYXMgTm9taW5hdGVBcmdzO1xuICAgICAgLy8gVGFyZ2V0cyBjYW4gYmUgZWl0aGVyIHN0cmluZ3Mgb3Igb2JqZWN0cyB3aXRoIGlkIHByb3BlcnR5XG4gICAgICBjb25zdCB0YXJnZXRWYWx1ZXMgPSBub21pbmF0ZUFyZ3MudGFyZ2V0cy5tYXAoKHRhcmdldCkgPT5cbiAgICAgICAgdHlwZW9mIHRhcmdldCA9PT0gJ3N0cmluZycgPyB0YXJnZXQgOiAodGFyZ2V0IGFzIHsgaWQ6IHN0cmluZyB9KS5pZFxuICAgICAgKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodGFyZ2V0VmFsdWVzLCBbdmFsaWRhdG9yQWRkcmVzc10pO1xuXG4gICAgICAvLyBOb3cgdmFsaWRhdGUgdXNpbmcgdGhlIGJ1aWxkZXIncyB2YWxpZGF0aW9uIG1ldGhvZFxuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiB7XG4gICAgICAgIGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24oZGVjb2RlZFR4KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBiYXRjaCB0cmFuc2FjdGlvbiB3aGVuIGJ1aWx0JywgKCkgPT4ge1xuICAgICAgLy8gVHJ5IHRvIGJ1aWxkIGEgYmF0Y2ggd2l0aCBvbmx5IGJvbmQgKG1pc3Npbmcgbm9taW5hdGUpXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBTaG91bGQgdGhyb3cgd2hlbiB0cnlpbmcgdG8gYnVpbGQgd2l0aG91dCB2YWxpZGF0b3JzXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICB9LCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgdmFsaWRhdGlvbiBvZiBub24tYmF0Y2ggbWV0aG9kIG5hbWUnLCAoKSA9PiB7XG4gICAgICAvLyBDcmVhdGUgYSBtb2NrIGRlY29kZWQgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBtZXRob2QgbmFtZVxuICAgICAgY29uc3QgbW9ja0RlY29kZWRUeDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBuYW1lOiAnYm9uZCcsXG4gICAgICAgICAgcGFsbGV0OiAnc3Rha2luZycsXG4gICAgICAgICAgYXJnczoge30sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZFR4KTtcbiAgICAgIH0sIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NpZ25hYmxlUGF5bG9hZCAoU3Vic3RyYXRlIDI1Ni1ieXRlIGJsYWtlMiBydWxlKScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBidWlsZEJhdGNoVHggPSBhc3luYyAobnVtVmFsaWRhdG9yczogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBiYXRjaEJ1aWxkZXIgPSBmYWN0b3J5LmdldEJhdGNoQnVpbGRlcigpO1xuICAgICAgYmF0Y2hCdWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLmNvbnRyb2xsZXIoeyBhZGRyZXNzOiBjb250cm9sbGVyQWRkcmVzcyB9KVxuICAgICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAgIC52YWxpZGF0b3JzKEFycmF5KG51bVZhbGlkYXRvcnMpLmZpbGwodmFsaWRhdG9yQWRkcmVzcykpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcbiAgICAgIGJhdGNoQnVpbGRlci5tYXRlcmlhbCh1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSkpO1xuICAgICAgcmV0dXJuIGJhdGNoQnVpbGRlci5idWlsZCgpO1xuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiByYXcgcGF5bG9hZCBieXRlcyB3aGVuIHRoZSBiYXRjaCBleHRyaW5zaWMgaXMgYXQgbW9zdCAyNTYgYnl0ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBib25kICsgbm9taW5hdGUgd2l0aCBhIHNpbmdsZSB2YWxpZGF0b3Igc3RheXMgdW5kZXIgdGhlIDI1Ni1ieXRlIHRocmVzaG9sZFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZEJhdGNoVHgoMSk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaWduYWJsZVBheWxvYWQubGVuZ3RoLnNob3VsZC5iZS5iZWxvd09yRXF1YWwoMjU2KTtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZC5sZW5ndGguc2hvdWxkLm5vdC5lcXVhbCgzMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgMzItYnl0ZSBibGFrZTJfMjU2IGhhc2ggd2hlbiB0aGUgYmF0Y2ggZXh0cmluc2ljIGV4Y2VlZHMgMjU2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gYm9uZCArIG5vbWluYXRlIHdpdGggbWFueSB2YWxpZGF0b3JzIHB1c2hlcyB0aGUgYmF0Y2ggb3ZlciB0aGUgMjU2LWJ5dGUgdGhyZXNob2xkXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkQmF0Y2hUeCg2KTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduYWJsZVBheWxvYWQubGVuZ3RoLCAzMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIFJhdyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSByZWFsIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgYnVpbGQgYSB0cmFuc2FjdGlvbiB0byBnZXQgYSByZWFsIHJhdyB0cmFuc2FjdGlvblxuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXRCYXRjaEJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0QmF0Y2hCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgcmVjb25zdHJ1Y3RlZCBidWlsZGVyIGhhcyB0aGUgc2FtZSBwYXJhbWV0ZXJzXG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRBbW91bnQoKSwgdGVzdEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwobmV3QnVpbGRlci5nZXRDb250cm9sbGVyKCksIGNvbnRyb2xsZXJBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaG91bGQgY3JlYXRlIHByb3Blcmx5IGNvbmZpZ3VyZWQgdHJhbnNhY3Rpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhIGJhdGNoIHRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5jb250cm9sbGVyKHsgYWRkcmVzczogY29udHJvbGxlckFkZHJlc3MgfSlcbiAgICAgICAgLnBheWVlKCdTdGFrZWQnKVxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgY29uc3QgbW9ja1R4ID0gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHN0YWtpbmdUeC5iYXRjaC5ib25kQW5kTm9taW5hdGUudW5zaWduZWQpO1xuICAgICAgc2lub24uc3R1YihidWlsZGVyLCAnYnVpbGQnKS5yZXNvbHZlcyhtb2NrVHggYXMgVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgnYSBiYXRjaCB0cmFuc2FjdGlvbiB3aXRoIGN1c3RvbSByZXBsYXkgcHJvdGVjdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCh0ZXN0QW1vdW50KVxuICAgICAgICAuY29udHJvbGxlcih7IGFkZHJlc3M6IGNvbnRyb2xsZXJBZGRyZXNzIH0pXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiA0MDAwLCBtYXhEdXJhdGlvbjogMTAwIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgyNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRlJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oJ2N1c3RvbS10eC1mb3JtYXQnKTtcbiAgICAgIHNpbm9uLnN0dWIoYnVpbGRlciwgJ2J1aWxkJykucmVzb2x2ZXMobW9ja1R4IGFzIFRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -155,6 +155,63 @@ describe('Polyx Nominate Builder', function () {
|
|
|
155
155
|
should_1.default.deepEqual(rebuiltBuilder.getValidators(), [validatorAddress, validatorAddress2]);
|
|
156
156
|
});
|
|
157
157
|
});
|
|
158
|
+
describe('signablePayload (Substrate 256-byte blake2 rule)', () => {
|
|
159
|
+
const buildNominateTx = async (validators) => {
|
|
160
|
+
const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
|
|
161
|
+
const nominateBuilder = factory.getNominateBuilder();
|
|
162
|
+
nominateBuilder
|
|
163
|
+
.validators(validators)
|
|
164
|
+
.sender({ address: senderAddress })
|
|
165
|
+
.validity({ firstValid: 3933, maxDuration: 64 })
|
|
166
|
+
.referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
|
|
167
|
+
.sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
|
|
168
|
+
.fee({ amount: 0, type: 'tip' })
|
|
169
|
+
.material(material);
|
|
170
|
+
return (await nominateBuilder.build());
|
|
171
|
+
};
|
|
172
|
+
it('should return raw payload bytes when the extrinsic is at most 256 bytes', async () => {
|
|
173
|
+
const tx = await buildNominateTx([validatorAddress, validatorAddress2]);
|
|
174
|
+
const signablePayload = tx.signablePayload;
|
|
175
|
+
// small nominate extrinsic stays under the 256-byte threshold, so it is signed as-is
|
|
176
|
+
signablePayload.length.should.be.belowOrEqual(256);
|
|
177
|
+
signablePayload.length.should.not.equal(32);
|
|
178
|
+
// for a sub-256-byte payload, signablePayload is exactly the raw extrinsic payload
|
|
179
|
+
const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
|
|
180
|
+
rawExtrinsicPayload.should.deepEqual(signablePayload);
|
|
181
|
+
// toJson surfaces the full raw payload as rawSignableHex even when it equals signablePayload
|
|
182
|
+
should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
|
|
183
|
+
});
|
|
184
|
+
it('should return the 32-byte blake2_256 hash when the extrinsic exceeds 256 bytes', async () => {
|
|
185
|
+
// Each nominate target adds a 33-byte MultiAddress (1-byte variant + 32-byte account id) on
|
|
186
|
+
// top of 79 bytes of fixed signing-payload overhead (call index, era, nonce, tip,
|
|
187
|
+
// spec/transaction versions, genesis + block hash). So 5 targets stay raw at 244 bytes and
|
|
188
|
+
// 6 already cross to 277 bytes (hashed). 8 would also exceed the threshold; this uses 9 to
|
|
189
|
+
// mirror the multi-nomination scenario from SI-926 with margin (376 bytes).
|
|
190
|
+
const manyValidators = Array(9).fill(validatorAddress);
|
|
191
|
+
const tx = await buildNominateTx(manyValidators);
|
|
192
|
+
const signablePayload = tx.signablePayload;
|
|
193
|
+
should_1.default.equal(signablePayload.length, 32);
|
|
194
|
+
// the raw extrinsic payload stays full-length and diverges from the hashed signablePayload
|
|
195
|
+
const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
|
|
196
|
+
rawExtrinsicPayload.length.should.be.greaterThan(256);
|
|
197
|
+
rawExtrinsicPayload.should.not.deepEqual(signablePayload);
|
|
198
|
+
// signablePayload is the blake2_256 hash of the raw extrinsic payload
|
|
199
|
+
utils_1.default.getSubstrateSigningBytes(tx.rawExtrinsicPayload).should.deepEqual(signablePayload);
|
|
200
|
+
// toJson surfaces the full raw payload as rawSignableHex for the HSM signing path
|
|
201
|
+
should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
|
|
202
|
+
});
|
|
203
|
+
// The 256-byte boundary is impractical to hit with a real extrinsic, so exercise the
|
|
204
|
+
// raw-vs-hash decision directly through the shared Substrate signing-bytes helper.
|
|
205
|
+
it('should keep payloads of exactly 256 bytes raw and only hash strictly larger ones', () => {
|
|
206
|
+
const at = utils_1.default.getSubstrateSigningBytes(new Uint8Array(256).fill(7));
|
|
207
|
+
should_1.default.equal(at.length, 256);
|
|
208
|
+
at.should.deepEqual(Buffer.alloc(256, 7));
|
|
209
|
+
const below = utils_1.default.getSubstrateSigningBytes(new Uint8Array(255).fill(7));
|
|
210
|
+
should_1.default.equal(below.length, 255);
|
|
211
|
+
const above = utils_1.default.getSubstrateSigningBytes(new Uint8Array(257).fill(7));
|
|
212
|
+
should_1.default.equal(above.length, 32);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
158
215
|
describe('factory routing', () => {
|
|
159
216
|
it('should route raw nominate extrinsic to NominateBuilder', () => {
|
|
160
217
|
const resolvedBuilder = factory.from(resources_1.nominateTx.signed);
|
|
@@ -166,4 +223,4 @@ describe('Polyx Nominate Builder', function () {
|
|
|
166
223
|
});
|
|
167
224
|
});
|
|
168
225
|
});
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9taW5hdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9ub21pbmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FBNEY7QUFDNUYsOENBQWtEO0FBQ2xELG1FQUEyQztBQUMzQywrQ0FBc0Y7QUFFdEYsUUFBUSxDQUFDLHdCQUF3QixFQUFFO0lBQ2pDLElBQUksT0FBd0IsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLGFBQWEsR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFN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LEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxxQkFBZSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxrQkFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb21pbmF0ZUJ1aWxkZXIsIEJhdGNoQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IGFjY291bnRzLCBub21pbmF0ZVR4LCBub21pbmF0ZVZhbGlkYXRvcnMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eCBOb21pbmF0ZSBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogTm9taW5hdGVCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSBub21pbmF0ZVZhbGlkYXRvcnNbMF07XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MyID0gbm9taW5hdGVWYWxpZGF0b3JzWzFdO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJhbnNhY3Rpb24gdHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBTdGFraW5nVm90ZSB0cmFuc2FjdGlvbiB0eXBlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXJbJ3RyYW5zYWN0aW9uVHlwZSddLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdG9ycyBzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSB2YWxpZGF0b3JzIGFycmF5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW10pLCAvYXQgbGVhc3QgMS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbW9yZSB0aGFuIDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b29NYW55ID0gQXJyYXkoMTcpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyh0b29NYW55KSwgL2F0IG1vc3QgMTYvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1hbGZvcm1lZCB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydub3QtYS12YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWNjZXB0IHZhbGlkIHNpbmdsZSB2YWxpZGF0b3InLCAoKSA9PiB7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBtdWx0aXBsZSB2YWxpZCB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBleGFjdGx5IDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBleGFjdGx5MTYgPSBBcnJheSgxNikuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKGV4YWN0bHkxNikpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdW5zaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2lnbmVkIG5vbWluYXRlIHRyYW5zYWN0aW9uIGZyb20gaGV4JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBzaWduZWRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHNpZ25lZEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgc2lnbmVkQnVpbGRlci5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHNpZ25lZEJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHZhbGlkYXRvcnMpO1xuICAgICAgdmFsaWRhdG9ycy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgbm9uLW5vbWluYXRlIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWQgPSB7XG4gICAgICAgIG1ldGhvZDogeyBuYW1lOiAnYm9uZCcsIHBhbGxldDogJ3N0YWtpbmcnLCBhcmdzOiB7fSB9LFxuICAgICAgfTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZCBhcyBuZXZlciksIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSByZWFsIGJ1aWx0IG5vbWluYXRlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IGJ1aWxkZXJbJ19yZWdpc3RyeSddLFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdub21pbmF0ZScpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2UgZnJvbSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2Ugc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBzaG91bGQuZXhpc3QodmFsaWRhdG9ycyk7XG4gICAgICB2YWxpZGF0b3JzLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwYXJzZSBmcm9tIHJhdyB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHVuc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIC8vIEJ1aWxkIGEgcmVhbCB1bnNpZ25lZCB0eCBmaXJzdCwgdGhlbiBwYXJzZSBpdCBiYWNrXG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKHJhd0hleCk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXdCdWlsZGVyLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgIHNob3VsZC5leGlzdCh2YWxpZGF0b3JzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodmFsaWRhdG9ycywgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVidWlsZCBmcm9tIHNlcmlhbGl6ZWQgdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByZXNlcnZlIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTUgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd0hleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcblxuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSByb3V0aW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcm91dGUgcmF3IG5vbWluYXRlIGV4dHJpbnNpYyB0byBOb21pbmF0ZUJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKHJlc29sdmVkQnVpbGRlciBpbnN0YW5jZW9mIE5vbWluYXRlQnVpbGRlciwgJ2V4cGVjdGVkIE5vbWluYXRlQnVpbGRlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSBiYXRjaEFsbCBib25kK25vbWluYXRlIHRvIEJhdGNoQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnNpZ25lZCk7XG4gICAgICBzaG91bGQub2socmVzb2x2ZWRCdWlsZGVyIGluc3RhbmNlb2YgQmF0Y2hCdWlsZGVyLCAnZXhwZWN0ZWQgQmF0Y2hCdWlsZGVyJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9taW5hdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9ub21pbmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsNENBQXVDO0FBQ3ZDLG9EQUE0QjtBQUM1QiwwQ0FBOEc7QUFDOUcsOENBQWtEO0FBQ2xELG1FQUEyQztBQUMzQywrQ0FBc0Y7QUFFdEYsUUFBUSxDQUFDLHdCQUF3QixFQUFFO0lBQ2pDLElBQUksT0FBd0IsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLGFBQWEsR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZDQUE2QyxFQUFFLEdBQUcsRUFBRTtZQUNyRCxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRixnQkFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1lBQzdDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNuRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzdELE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsT0FBTztpQkFDSixVQUFVLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO2lCQUNqRCxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUM7aUJBQ2xDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMvQyxjQUFjLENBQUMsb0VBQW9FLENBQUM7aUJBQ3BGLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQzFELEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2lCQUMvQixRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdEIsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQ2pELEVBQUUsQ0FBQyxxREFBcUQsRUFBRSxHQUFHLEVBQUU7WUFDN0QsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNuRCxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV0QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtRQUMxQyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sV0FBVyxHQUFHO2dCQUNsQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTthQUN0RCxDQUFDO1lBQ0YsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLFdBQW9CLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQzVHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU87aUJBQ0osVUFBVSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztpQkFDakQsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBTSxFQUFDLFVBQVUsRUFBRTtnQkFDbkMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUM5QixRQUFRLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQzthQUMvQixDQUFDLENBQUM7WUFFSCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNoRCxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDaEQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlDLGdCQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pCLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hFLE1BQU0sUUFBUSxHQUFHLGVBQUssQ0FBQyxXQUFXLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUscURBQXFEO1lBQ3JELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3JELGVBQWU7aUJBQ1osVUFBVSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztpQkFDakQsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO2lCQUNsQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO2lCQUMxRCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztpQkFDL0IsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXRCLE1BQU0sRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRXRDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hELFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4QixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekIsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUMxQixFQUFFLENBQUMsNkVBQTZFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDM0YsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyRCxlQUFlO2lCQUNaLFVBQVUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7aUJBQ2pELE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QixNQUFNLEVBQUUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV0QyxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNwRCxjQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUIsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO1FBQ2hFLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDckQsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLFdBQVcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyRCxlQUFlO2lCQUNaLFVBQVUsQ0FBQyxVQUFVLENBQUM7aUJBQ3RCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDbEMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7aUJBQy9CLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixPQUFPLENBQUMsTUFBTSxlQUFlLENBQUMsS0FBSyxFQUFFLENBQXFCLENBQUM7UUFDN0QsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZGLE1BQU0sRUFBRSxHQUFHLE1BQU0sZUFBZSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDM0MscUZBQXFGO1lBQ3JGLGVBQWUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxtRkFBbUY7WUFDbkYsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hFLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEQsNkZBQTZGO1lBQzdGLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0ZBQWdGLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDOUYsNEZBQTRGO1lBQzVGLGtGQUFrRjtZQUNsRiwyRkFBMkY7WUFDM0YsMkZBQTJGO1lBQzNGLDRFQUE0RTtZQUM1RSxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkQsTUFBTSxFQUFFLEdBQUcsTUFBTSxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakQsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUMzQyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLDJGQUEyRjtZQUMzRixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDaEUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFELHNFQUFzRTtZQUN0RSxlQUFLLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6RixrRkFBa0Y7WUFDbEYsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDLENBQUMsQ0FBQztRQUVILHFGQUFxRjtRQUNyRixtRkFBbUY7UUFDbkYsRUFBRSxDQUFDLGtGQUFrRixFQUFFLEdBQUcsRUFBRTtZQUMxRixNQUFNLEVBQUUsR0FBRyxlQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM3QixFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sS0FBSyxHQUFHLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxxQkFBZSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxrQkFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBOb21pbmF0ZUJ1aWxkZXIsIEJhdGNoQnVpbGRlciwgUG9seXhUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IGFjY291bnRzLCBub21pbmF0ZVR4LCBub21pbmF0ZVZhbGlkYXRvcnMsIHN0YWtpbmdUeCB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eCBOb21pbmF0ZSBCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBsZXQgYnVpbGRlcjogTm9taW5hdGVCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSBub21pbmF0ZVZhbGlkYXRvcnNbMF07XG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MyID0gbm9taW5hdGVWYWxpZGF0b3JzWzFdO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJhbnNhY3Rpb24gdHlwZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBTdGFraW5nVm90ZSB0cmFuc2FjdGlvbiB0eXBlJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXJbJ3RyYW5zYWN0aW9uVHlwZSddLCBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1ZvdGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdG9ycyBzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlamVjdCBlbXB0eSB2YWxpZGF0b3JzIGFycmF5JywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW10pLCAvYXQgbGVhc3QgMS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbW9yZSB0aGFuIDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0b29NYW55ID0gQXJyYXkoMTcpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyh0b29NYW55KSwgL2F0IG1vc3QgMTYvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1hbGZvcm1lZCB2YWxpZGF0b3IgYWRkcmVzc2VzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoWydub3QtYS12YWxpZC1hZGRyZXNzJ10pLCAvaXMgbm90IGEgd2VsbC1mb3JtZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWNjZXB0IHZhbGlkIHNpbmdsZSB2YWxpZGF0b3InLCAoKSA9PiB7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzc10pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBtdWx0aXBsZSB2YWxpZCB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChidWlsZGVyLmdldFZhbGlkYXRvcnMoKSwgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBleGFjdGx5IDE2IHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBleGFjdGx5MTYgPSBBcnJheSgxNikuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKGV4YWN0bHkxNikpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdW5zaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bnNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgICBzaG91bGQuZXF1YWwodHgudHlwZSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2lnbmVkIG5vbWluYXRlIHRyYW5zYWN0aW9uIGZyb20gaGV4JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBzaWduZWRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHNpZ25lZEJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgc2lnbmVkQnVpbGRlci5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHNpZ25lZEJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHZhbGlkYXRvcnMpO1xuICAgICAgdmFsaWRhdG9ycy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3Qgbm9uLW5vbWluYXRlIG1ldGhvZCBuYW1lJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWQgPSB7XG4gICAgICAgIG1ldGhvZDogeyBuYW1lOiAnYm9uZCcsIHBhbGxldDogJ3N0YWtpbmcnLCBhcmdzOiB7fSB9LFxuICAgICAgfTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZCBhcyBuZXZlciksIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYSByZWFsIGJ1aWx0IG5vbWluYXRlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHVuc2lnbmVkVHggPSBidWlsZGVyWydidWlsZFRyYW5zYWN0aW9uJ10oKTtcbiAgICAgIGNvbnN0IGRlY29kZWRUeCA9IGRlY29kZSh1bnNpZ25lZFR4LCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiBtYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnk6IGJ1aWxkZXJbJ19yZWdpc3RyeSddLFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdub21pbmF0ZScpO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2UgZnJvbSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcGFyc2Ugc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG5ld0J1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBzaG91bGQuZXhpc3QodmFsaWRhdG9ycyk7XG4gICAgICB2YWxpZGF0b3JzLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwYXJzZSBmcm9tIHJhdyB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHVuc2lnbmVkIG5vbWluYXRlIHR4IGFuZCByZWNvdmVyIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIC8vIEJ1aWxkIGEgcmVhbCB1bnNpZ25lZCB0eCBmaXJzdCwgdGhlbiBwYXJzZSBpdCBiYWNrXG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKHJhd0hleCk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXdCdWlsZGVyLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgIHNob3VsZC5leGlzdCh2YWxpZGF0b3JzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodmFsaWRhdG9ycywgW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyb3VuZC10cmlwJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVidWlsZCBmcm9tIHNlcmlhbGl6ZWQgdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByZXNlcnZlIHZhbGlkYXRvcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBvcmlnaW5hbEJ1aWxkZXJcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTUgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd0hleCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcblxuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZWJ1aWx0QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2lnbmFibGVQYXlsb2FkIChTdWJzdHJhdGUgMjU2LWJ5dGUgYmxha2UyIHJ1bGUpJywgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkTm9taW5hdGVUeCA9IGFzeW5jICh2YWxpZGF0b3JzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBub21pbmF0ZUJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgbm9taW5hdGVCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKHZhbGlkYXRvcnMpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICByZXR1cm4gKGF3YWl0IG5vbWluYXRlQnVpbGRlci5idWlsZCgpKSBhcyBQb2x5eFRyYW5zYWN0aW9uO1xuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiByYXcgcGF5bG9hZCBieXRlcyB3aGVuIHRoZSBleHRyaW5zaWMgaXMgYXQgbW9zdCAyNTYgYnl0ZXMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkTm9taW5hdGVUeChbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIC8vIHNtYWxsIG5vbWluYXRlIGV4dHJpbnNpYyBzdGF5cyB1bmRlciB0aGUgMjU2LWJ5dGUgdGhyZXNob2xkLCBzbyBpdCBpcyBzaWduZWQgYXMtaXNcbiAgICAgIHNpZ25hYmxlUGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmJlbG93T3JFcXVhbCgyNTYpO1xuICAgICAgc2lnbmFibGVQYXlsb2FkLmxlbmd0aC5zaG91bGQubm90LmVxdWFsKDMyKTtcbiAgICAgIC8vIGZvciBhIHN1Yi0yNTYtYnl0ZSBwYXlsb2FkLCBzaWduYWJsZVBheWxvYWQgaXMgZXhhY3RseSB0aGUgcmF3IGV4dHJpbnNpYyBwYXlsb2FkXG4gICAgICBjb25zdCByYXdFeHRyaW5zaWNQYXlsb2FkID0gQnVmZmVyLmZyb20odHgucmF3RXh0cmluc2ljUGF5bG9hZCk7XG4gICAgICByYXdFeHRyaW5zaWNQYXlsb2FkLnNob3VsZC5kZWVwRXF1YWwoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIC8vIHRvSnNvbiBzdXJmYWNlcyB0aGUgZnVsbCByYXcgcGF5bG9hZCBhcyByYXdTaWduYWJsZUhleCBldmVuIHdoZW4gaXQgZXF1YWxzIHNpZ25hYmxlUGF5bG9hZFxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnJhd1NpZ25hYmxlSGV4LCByYXdFeHRyaW5zaWNQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgMzItYnl0ZSBibGFrZTJfMjU2IGhhc2ggd2hlbiB0aGUgZXh0cmluc2ljIGV4Y2VlZHMgMjU2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRWFjaCBub21pbmF0ZSB0YXJnZXQgYWRkcyBhIDMzLWJ5dGUgTXVsdGlBZGRyZXNzICgxLWJ5dGUgdmFyaWFudCArIDMyLWJ5dGUgYWNjb3VudCBpZCkgb25cbiAgICAgIC8vIHRvcCBvZiA3OSBieXRlcyBvZiBmaXhlZCBzaWduaW5nLXBheWxvYWQgb3ZlcmhlYWQgKGNhbGwgaW5kZXgsIGVyYSwgbm9uY2UsIHRpcCxcbiAgICAgIC8vIHNwZWMvdHJhbnNhY3Rpb24gdmVyc2lvbnMsIGdlbmVzaXMgKyBibG9jayBoYXNoKS4gU28gNSB0YXJnZXRzIHN0YXkgcmF3IGF0IDI0NCBieXRlcyBhbmRcbiAgICAgIC8vIDYgYWxyZWFkeSBjcm9zcyB0byAyNzcgYnl0ZXMgKGhhc2hlZCkuIDggd291bGQgYWxzbyBleGNlZWQgdGhlIHRocmVzaG9sZDsgdGhpcyB1c2VzIDkgdG9cbiAgICAgIC8vIG1pcnJvciB0aGUgbXVsdGktbm9taW5hdGlvbiBzY2VuYXJpbyBmcm9tIFNJLTkyNiB3aXRoIG1hcmdpbiAoMzc2IGJ5dGVzKS5cbiAgICAgIGNvbnN0IG1hbnlWYWxpZGF0b3JzID0gQXJyYXkoOSkuZmlsbCh2YWxpZGF0b3JBZGRyZXNzKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGROb21pbmF0ZVR4KG1hbnlWYWxpZGF0b3JzKTtcbiAgICAgIGNvbnN0IHNpZ25hYmxlUGF5bG9hZCA9IHR4LnNpZ25hYmxlUGF5bG9hZDtcbiAgICAgIHNob3VsZC5lcXVhbChzaWduYWJsZVBheWxvYWQubGVuZ3RoLCAzMik7XG4gICAgICAvLyB0aGUgcmF3IGV4dHJpbnNpYyBwYXlsb2FkIHN0YXlzIGZ1bGwtbGVuZ3RoIGFuZCBkaXZlcmdlcyBmcm9tIHRoZSBoYXNoZWQgc2lnbmFibGVQYXlsb2FkXG4gICAgICBjb25zdCByYXdFeHRyaW5zaWNQYXlsb2FkID0gQnVmZmVyLmZyb20odHgucmF3RXh0cmluc2ljUGF5bG9hZCk7XG4gICAgICByYXdFeHRyaW5zaWNQYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMjU2KTtcbiAgICAgIHJhd0V4dHJpbnNpY1BheWxvYWQuc2hvdWxkLm5vdC5kZWVwRXF1YWwoc2lnbmFibGVQYXlsb2FkKTtcbiAgICAgIC8vIHNpZ25hYmxlUGF5bG9hZCBpcyB0aGUgYmxha2UyXzI1NiBoYXNoIG9mIHRoZSByYXcgZXh0cmluc2ljIHBheWxvYWRcbiAgICAgIHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyh0eC5yYXdFeHRyaW5zaWNQYXlsb2FkKS5zaG91bGQuZGVlcEVxdWFsKHNpZ25hYmxlUGF5bG9hZCk7XG4gICAgICAvLyB0b0pzb24gc3VyZmFjZXMgdGhlIGZ1bGwgcmF3IHBheWxvYWQgYXMgcmF3U2lnbmFibGVIZXggZm9yIHRoZSBIU00gc2lnbmluZyBwYXRoXG4gICAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkucmF3U2lnbmFibGVIZXgsIHJhd0V4dHJpbnNpY1BheWxvYWQudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSAyNTYtYnl0ZSBib3VuZGFyeSBpcyBpbXByYWN0aWNhbCB0byBoaXQgd2l0aCBhIHJlYWwgZXh0cmluc2ljLCBzbyBleGVyY2lzZSB0aGVcbiAgICAvLyByYXctdnMtaGFzaCBkZWNpc2lvbiBkaXJlY3RseSB0aHJvdWdoIHRoZSBzaGFyZWQgU3Vic3RyYXRlIHNpZ25pbmctYnl0ZXMgaGVscGVyLlxuICAgIGl0KCdzaG91bGQga2VlcCBwYXlsb2FkcyBvZiBleGFjdGx5IDI1NiBieXRlcyByYXcgYW5kIG9ubHkgaGFzaCBzdHJpY3RseSBsYXJnZXIgb25lcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF0ID0gdXRpbHMuZ2V0U3Vic3RyYXRlU2lnbmluZ0J5dGVzKG5ldyBVaW50OEFycmF5KDI1NikuZmlsbCg3KSk7XG4gICAgICBzaG91bGQuZXF1YWwoYXQubGVuZ3RoLCAyNTYpO1xuICAgICAgYXQuc2hvdWxkLmRlZXBFcXVhbChCdWZmZXIuYWxsb2MoMjU2LCA3KSk7XG5cbiAgICAgIGNvbnN0IGJlbG93ID0gdXRpbHMuZ2V0U3Vic3RyYXRlU2lnbmluZ0J5dGVzKG5ldyBVaW50OEFycmF5KDI1NSkuZmlsbCg3KSk7XG4gICAgICBzaG91bGQuZXF1YWwoYmVsb3cubGVuZ3RoLCAyNTUpO1xuXG4gICAgICBjb25zdCBhYm92ZSA9IHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyhuZXcgVWludDhBcnJheSgyNTcpLmZpbGwoNykpO1xuICAgICAgc2hvdWxkLmVxdWFsKGFib3ZlLmxlbmd0aCwgMzIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmFjdG9yeSByb3V0aW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcm91dGUgcmF3IG5vbWluYXRlIGV4dHJpbnNpYyB0byBOb21pbmF0ZUJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20obm9taW5hdGVUeC5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKHJlc29sdmVkQnVpbGRlciBpbnN0YW5jZW9mIE5vbWluYXRlQnVpbGRlciwgJ2V4cGVjdGVkIE5vbWluYXRlQnVpbGRlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByb3V0ZSBiYXRjaEFsbCBib25kK25vbWluYXRlIHRvIEJhdGNoQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQnVpbGRlciA9IGZhY3RvcnkuZnJvbShzdGFraW5nVHguYmF0Y2guYm9uZEFuZE5vbWluYXRlLnNpZ25lZCk7XG4gICAgICBzaG91bGQub2socmVzb2x2ZWRCdWlsZGVyIGluc3RhbmNlb2YgQmF0Y2hCdWlsZGVyLCAnZXhwZWN0ZWQgQmF0Y2hCdWlsZGVyJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v8BatchStakingBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8BatchStakingBuilder.ts"],"names":[],"mappings":""}
|