@bitgo-beta/sdk-coin-hbar 1.3.3-alpha.105 → 1.3.3-alpha.107

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.
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -36,22 +40,22 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
36
40
  }
37
41
  buildTokenTransferData() {
38
42
  let tokenTransferAmount = new bignumber_js_1.BigNumber(0); // total send amount for each token
39
- const tokenId = utils_1.getHederaTokenIdFromName(this._tokenName);
43
+ const tokenId = (0, utils_1.getHederaTokenIdFromName)(this._tokenName);
40
44
  const tokenTransferData = [
41
45
  {
42
- accountID: utils_1.buildHederaAccountID(this._source.address),
46
+ accountID: (0, utils_1.buildHederaAccountID)(this._source.address),
43
47
  amount: Long.fromInt(0),
44
48
  },
45
49
  ];
46
50
  this._recipients.forEach((recipient) => {
47
51
  tokenTransferAmount = tokenTransferAmount.plus(recipient.amount);
48
- tokenTransferData.push({ accountID: utils_1.buildHederaAccountID(recipient.address), amount: Long.fromString(recipient.amount) } // recipient
52
+ tokenTransferData.push({ accountID: (0, utils_1.buildHederaAccountID)(recipient.address), amount: Long.fromString(recipient.amount) } // recipient
49
53
  );
50
54
  });
51
55
  tokenTransferData[0].amount = Long.fromString(tokenTransferAmount.toString()).negate(); // update sender send amount
52
56
  return [
53
57
  {
54
- token: utils_1.buildHederaTokenID(tokenId),
58
+ token: (0, utils_1.buildHederaTokenID)(tokenId),
55
59
  transfers: tokenTransferData,
56
60
  },
57
61
  ];
@@ -60,7 +64,7 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
60
64
  initBuilder(tx) {
61
65
  super.initBuilder(tx);
62
66
  const transferData = tx.txBody.cryptoTransfer;
63
- if (utils_1.isTokenTransfer(transferData)) {
67
+ if ((0, utils_1.isTokenTransfer)(transferData)) {
64
68
  this.initTokenTransfers(transferData.tokenTransfers);
65
69
  }
66
70
  }
@@ -79,7 +83,7 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
79
83
  if (!tokenTransfer.transfers) {
80
84
  throw new sdk_core_1.BuildTransactionError('Invalid transaction: missing transfer data');
81
85
  }
82
- const token = utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(tokenTransfer.token));
86
+ const token = (0, utils_1.getHederaTokenNameFromId)((0, utils_1.stringifyTokenId)(tokenTransfer.token));
83
87
  if (!token) {
84
88
  throw new sdk_core_1.BuildTransactionError('Invalid transaction: invalid token id');
85
89
  }
@@ -87,7 +91,7 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
87
91
  const amount = Long.fromValue(transferData.amount);
88
92
  if (amount.isPositive()) {
89
93
  this.send({
90
- address: utils_1.stringifyAccountId(transferData.accountID),
94
+ address: (0, utils_1.stringifyAccountId)(transferData.accountID),
91
95
  amount: amount.toString(),
92
96
  tokenName: token.name,
93
97
  });
@@ -101,7 +105,7 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
101
105
  if (!recipient.tokenName) {
102
106
  throw new sdk_core_1.InvalidParameterValueError('Invalid missing token name');
103
107
  }
104
- const tokenId = utils_1.getHederaTokenIdFromName(recipient.tokenName);
108
+ const tokenId = (0, utils_1.getHederaTokenIdFromName)(recipient.tokenName);
105
109
  if (!tokenId) {
106
110
  throw new sdk_core_1.InvalidParameterValueError(`Invalid token name: ${recipient.tokenName}`);
107
111
  }
@@ -113,4 +117,4 @@ class TokenTransferBuilder extends transferBuilder_1.TransferBuilder {
113
117
  }
114
118
  }
115
119
  exports.TokenTransferBuilder = TokenTransferBuilder;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyQ0FBNkI7QUFFN0IsbURBQXlGO0FBRXpGLHVEQUFvRDtBQUVwRCxtQ0FRaUI7QUFDakIsK0NBQXlDO0FBRXpDLE1BQWEsb0JBQXFCLFNBQVEsaUNBQWU7SUFHdkQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyw4QkFBOEI7UUFDL0YsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLHdCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7UUFDL0UsTUFBTSxPQUFPLEdBQUcsZ0NBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hEO2dCQUNFLFNBQVMsRUFBRSw0QkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDckQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRSxpQkFBaUIsQ0FB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LENBQUMsU0FBUyxRQUFRLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDO1NBQ2xIO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBRUY7QUFsR0Qsb0RBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0ICogYXMgTG9uZyBmcm9tICdsb25nJztcbmltcG9ydCB7IHByb3RvIH0gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUmVjaXBpZW50IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRIZWRlcmFBY2NvdW50SUQsXG4gIGJ1aWxkSGVkZXJhVG9rZW5JRCxcbiAgZ2V0SGVkZXJhVG9rZW5JZEZyb21OYW1lLFxuICBnZXRIZWRlcmFUb2tlbk5hbWVGcm9tSWQsXG4gIGlzVG9rZW5UcmFuc2ZlcixcbiAgc3RyaW5naWZ5QWNjb3VudElkLFxuICBzdHJpbmdpZnlUb2tlbklkLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBUb2tlblRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zZmVyQnVpbGRlciB7XG4gIHByaXZhdGUgX3Rva2VuTmFtZTsgLy8gY3VycmVudGx5IG9ubHkgc3VwcG9ydCAxIHRva2VuL3RyYW5zZmVyXG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLl90eEJvZHlEYXRhLnRva2VuVHJhbnNmZXJzID0gdGhpcy5idWlsZFRva2VuVHJhbnNmZXJEYXRhKCk7IC8vIHNldCB0byBsaXN0IGJ5IHRoZSBjb250cmFjdFxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVG9rZW5UcmFuc2ZlckRhdGEoKTogcHJvdG8uSVRva2VuVHJhbnNmZXJMaXN0W10ge1xuICAgIGxldCB0b2tlblRyYW5zZmVyQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTsgLy8gdG90YWwgc2VuZCBhbW91bnQgZm9yIGVhY2ggdG9rZW5cbiAgICBjb25zdCB0b2tlbklkID0gZ2V0SGVkZXJhVG9rZW5JZEZyb21OYW1lKHRoaXMuX3Rva2VuTmFtZSk7XG4gICAgY29uc3QgdG9rZW5UcmFuc2ZlckRhdGE6IHByb3RvLklBY2NvdW50QW1vdW50W10gPSBbXG4gICAgICB7XG4gICAgICAgIGFjY291bnRJRDogYnVpbGRIZWRlcmFBY2NvdW50SUQodGhpcy5fc291cmNlLmFkZHJlc3MpLFxuICAgICAgICBhbW91bnQ6IExvbmcuZnJvbUludCgwKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHRoaXMuX3JlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICB0b2tlblRyYW5zZmVyQW1vdW50ID0gdG9rZW5UcmFuc2ZlckFtb3VudC5wbHVzKHJlY2lwaWVudC5hbW91bnQpO1xuICAgICAgdG9rZW5UcmFuc2ZlckRhdGEucHVzaChcbiAgICAgICAgeyBhY2NvdW50SUQ6IGJ1aWxkSGVkZXJhQWNjb3VudElEKHJlY2lwaWVudC5hZGRyZXNzKSwgYW1vdW50OiBMb25nLmZyb21TdHJpbmcocmVjaXBpZW50LmFtb3VudCkgfSAvLyByZWNpcGllbnRcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdG9rZW5UcmFuc2ZlckRhdGFbMF0uYW1vdW50ID0gTG9uZy5mcm9tU3RyaW5nKHRva2VuVHJhbnNmZXJBbW91bnQudG9TdHJpbmcoKSkubmVnYXRlKCk7IC8vIHVwZGF0ZSBzZW5kZXIgc2VuZCBhbW91bnRcblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRva2VuOiBidWlsZEhlZGVyYVRva2VuSUQodG9rZW5JZCEpLFxuICAgICAgICB0cmFuc2ZlcnM6IHRva2VuVHJhbnNmZXJEYXRhLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBjb25zdCB0cmFuc2ZlckRhdGEgPSB0eC50eEJvZHkuY3J5cHRvVHJhbnNmZXIhO1xuICAgIGlmIChpc1Rva2VuVHJhbnNmZXIodHJhbnNmZXJEYXRhKSkge1xuICAgICAgdGhpcy5pbml0VG9rZW5UcmFuc2ZlcnModHJhbnNmZXJEYXRhLnRva2VuVHJhbnNmZXJzISk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zZmVyIHNwZWNpZmljIGRhdGEsIGdldHRpbmcgdGhlIHJlY2lwaWVudCBhY2NvdW50XG4gICAqIHJlcHJlc2VudGVkIGJ5IHRoZSBlbGVtZW50IHdpdGggYSBwb3NpdGl2ZSBhbW91bnQgb24gdGhlIHRyYW5zZmVyIGVsZW1lbnQuXG4gICAqIFRoZSBuZWdhdGl2ZSBhbW91bnQgcmVwcmVzZW50cyB0aGUgc291cmNlIGFjY291bnQgc28gaXQncyBpZ25vcmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb3RvLklBY2NvdW50QW1vdW50W119IHRyYW5zZmVycyBhcnJheSBvZiBvYmplY3RzIHdoaWNoIGNvbnRhaW5zIGFjY291bnRJRCBhbmQgdHJhbnNmZXJyZWQgYW1vdW50XG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdFRva2VuVHJhbnNmZXJzKHRva2VuVHJhbnNmZXJzOiBwcm90by5JVG9rZW5UcmFuc2Zlckxpc3RbXSk6IHZvaWQge1xuICAgIHRva2VuVHJhbnNmZXJzLmZvckVhY2goKHRva2VuVHJhbnNmZXI6IHByb3RvLklUb2tlblRyYW5zZmVyTGlzdCkgPT4ge1xuICAgICAgaWYgKCF0b2tlblRyYW5zZmVyLnRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG9rZW4gaWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghdG9rZW5UcmFuc2Zlci50cmFuc2ZlcnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyB0cmFuc2ZlciBkYXRhJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkKHN0cmluZ2lmeVRva2VuSWQodG9rZW5UcmFuc2Zlci50b2tlbiEpKTtcbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCB0b2tlbiBpZCcpO1xuICAgICAgfVxuICAgICAgdG9rZW5UcmFuc2Zlci50cmFuc2ZlcnMuZm9yRWFjaCgodHJhbnNmZXJEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9IExvbmcuZnJvbVZhbHVlKHRyYW5zZmVyRGF0YS5hbW91bnQhKTtcbiAgICAgICAgaWYgKGFtb3VudC5pc1Bvc2l0aXZlKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbmQoe1xuICAgICAgICAgICAgYWRkcmVzczogc3RyaW5naWZ5QWNjb3VudElkKHRyYW5zZmVyRGF0YS5hY2NvdW50SUQhKSxcbiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b2tlbk5hbWU6IHRva2VuLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gcmVnaW9uIFRyYW5zZmVyIGZpZWxkc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IHRoaXMge1xuICAgIGlmICghcmVjaXBpZW50LnRva2VuTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIG1pc3NpbmcgdG9rZW4gbmFtZScpO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbklkID0gZ2V0SGVkZXJhVG9rZW5JZEZyb21OYW1lKHJlY2lwaWVudC50b2tlbk5hbWUpO1xuICAgIGlmICghdG9rZW5JZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKGBJbnZhbGlkIHRva2VuIG5hbWU6ICR7cmVjaXBpZW50LnRva2VuTmFtZX1gKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3Rva2VuTmFtZSAmJiB0aGlzLl90b2tlbk5hbWUgIT09IHJlY2lwaWVudC50b2tlbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcihgSW52YWxpZCB0b2tlbjogcmVjZWl2ZWQgJHtyZWNpcGllbnQudG9rZW5OYW1lfSBmb3IgJHt0aGlzLl90b2tlbk5hbWV9IHR4YCk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuTmFtZSA9IHJlY2lwaWVudC50b2tlbk5hbWU7XG4gICAgcmV0dXJuIHN1cGVyLnNlbmQocmVjaXBpZW50KTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkNBQTZCO0FBRTdCLG1EQUF5RjtBQUV6Rix1REFBb0Q7QUFFcEQsbUNBUWlCO0FBQ2pCLCtDQUF5QztBQUV6QyxNQUFhLG9CQUFxQixTQUFRLGlDQUFlO0lBR3ZELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBQy9GLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksbUJBQW1CLEdBQUcsSUFBSSx3QkFBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQW1DO1FBQy9FLE1BQU0sT0FBTyxHQUFHLElBQUEsZ0NBQXdCLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFELE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hEO2dCQUNFLFNBQVMsRUFBRSxJQUFBLDRCQUFvQixFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUNyRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDeEI7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNyQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lB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U0FBUyxFQUFFO1lBQzlELE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQywyQkFBMkIsU0FBUyxDQUFDLFNBQVMsUUFBUSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQztTQUNsSDtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUN0QyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUVGO0FBbEdELG9EQWtHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCAqIGFzIExvbmcgZnJvbSAnbG9uZyc7XG5pbXBvcnQgeyBwcm90byB9IGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFJlY2lwaWVudCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGJ1aWxkSGVkZXJhQWNjb3VudElELFxuICBidWlsZEhlZGVyYVRva2VuSUQsXG4gIGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZSxcbiAgZ2V0SGVkZXJhVG9rZW5OYW1lRnJvbUlkLFxuICBpc1Rva2VuVHJhbnNmZXIsXG4gIHN0cmluZ2lmeUFjY291bnRJZCxcbiAgc3RyaW5naWZ5VG9rZW5JZCxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBCaWdOdW1iZXIgfSBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2ZlckJ1aWxkZXIge1xuICBwcml2YXRlIF90b2tlbk5hbWU7IC8vIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgMSB0b2tlbi90cmFuc2ZlclxuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fdHhCb2R5RGF0YS50b2tlblRyYW5zZmVycyA9IHRoaXMuYnVpbGRUb2tlblRyYW5zZmVyRGF0YSgpOyAvLyBzZXQgdG8gbGlzdCBieSB0aGUgY29udHJhY3RcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFRva2VuVHJhbnNmZXJEYXRhKCk6IHByb3RvLklUb2tlblRyYW5zZmVyTGlzdFtdIHtcbiAgICBsZXQgdG9rZW5UcmFuc2ZlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoMCk7IC8vIHRvdGFsIHNlbmQgYW1vdW50IGZvciBlYWNoIHRva2VuXG4gICAgY29uc3QgdG9rZW5JZCA9IGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZSh0aGlzLl90b2tlbk5hbWUpO1xuICAgIGNvbnN0IHRva2VuVHJhbnNmZXJEYXRhOiBwcm90by5JQWNjb3VudEFtb3VudFtdID0gW1xuICAgICAge1xuICAgICAgICBhY2NvdW50SUQ6IGJ1aWxkSGVkZXJhQWNjb3VudElEKHRoaXMuX3NvdXJjZS5hZGRyZXNzKSxcbiAgICAgICAgYW1vdW50OiBMb25nLmZyb21JbnQoMCksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0aGlzLl9yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgdG9rZW5UcmFuc2ZlckFtb3VudCA9IHRva2VuVHJhbnNmZXJBbW91bnQucGx1cyhyZWNpcGllbnQuYW1vdW50KTtcbiAgICAgIHRva2VuVHJhbnNmZXJEYXRhLnB1c2goXG4gICAgICAgIHsgYWNjb3VudElEOiBidWlsZEhlZGVyYUFjY291bnRJRChyZWNpcGllbnQuYWRkcmVzcyksIGFtb3VudDogTG9uZy5mcm9tU3RyaW5nKHJlY2lwaWVudC5hbW91bnQpIH0gLy8gcmVjaXBpZW50XG4gICAgICApO1xuICAgIH0pO1xuICAgIHRva2VuVHJhbnNmZXJEYXRhWzBdLmFtb3VudCA9IExvbmcuZnJvbVN0cmluZyh0b2tlblRyYW5zZmVyQW1vdW50LnRvU3RyaW5nKCkpLm5lZ2F0ZSgpOyAvLyB1cGRhdGUgc2VuZGVyIHNlbmQgYW1vdW50XG5cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICB0b2tlbjogYnVpbGRIZWRlcmFUb2tlbklEKHRva2VuSWQhKSxcbiAgICAgICAgdHJhbnNmZXJzOiB0b2tlblRyYW5zZmVyRGF0YSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgY29uc3QgdHJhbnNmZXJEYXRhID0gdHgudHhCb2R5LmNyeXB0b1RyYW5zZmVyITtcbiAgICBpZiAoaXNUb2tlblRyYW5zZmVyKHRyYW5zZmVyRGF0YSkpIHtcbiAgICAgIHRoaXMuaW5pdFRva2VuVHJhbnNmZXJzKHRyYW5zZmVyRGF0YS50b2tlblRyYW5zZmVycyEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2ZlciBzcGVjaWZpYyBkYXRhLCBnZXR0aW5nIHRoZSByZWNpcGllbnQgYWNjb3VudFxuICAgKiByZXByZXNlbnRlZCBieSB0aGUgZWxlbWVudCB3aXRoIGEgcG9zaXRpdmUgYW1vdW50IG9uIHRoZSB0cmFuc2ZlciBlbGVtZW50LlxuICAgKiBUaGUgbmVnYXRpdmUgYW1vdW50IHJlcHJlc2VudHMgdGhlIHNvdXJjZSBhY2NvdW50IHNvIGl0J3MgaWdub3JlZC5cbiAgICpcbiAgICogQHBhcmFtIHtwcm90by5JQWNjb3VudEFtb3VudFtdfSB0cmFuc2ZlcnMgYXJyYXkgb2Ygb2JqZWN0cyB3aGljaCBjb250YWlucyBhY2NvdW50SUQgYW5kIHRyYW5zZmVycmVkIGFtb3VudFxuICAgKi9cbiAgcHJvdGVjdGVkIGluaXRUb2tlblRyYW5zZmVycyh0b2tlblRyYW5zZmVyczogcHJvdG8uSVRva2VuVHJhbnNmZXJMaXN0W10pOiB2b2lkIHtcbiAgICB0b2tlblRyYW5zZmVycy5mb3JFYWNoKCh0b2tlblRyYW5zZmVyOiBwcm90by5JVG9rZW5UcmFuc2Zlckxpc3QpID0+IHtcbiAgICAgIGlmICghdG9rZW5UcmFuc2Zlci50b2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHRva2VuIGlkJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRva2VuVHJhbnNmZXIudHJhbnNmZXJzKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdHJhbnNmZXIgZGF0YScpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2tlbiA9IGdldEhlZGVyYVRva2VuTmFtZUZyb21JZChzdHJpbmdpZnlUb2tlbklkKHRva2VuVHJhbnNmZXIudG9rZW4hKSk7XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgdG9rZW4gaWQnKTtcbiAgICAgIH1cbiAgICAgIHRva2VuVHJhbnNmZXIudHJhbnNmZXJzLmZvckVhY2goKHRyYW5zZmVyRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBhbW91bnQgPSBMb25nLmZyb21WYWx1ZSh0cmFuc2ZlckRhdGEuYW1vdW50ISk7XG4gICAgICAgIGlmIChhbW91bnQuaXNQb3NpdGl2ZSgpKSB7XG4gICAgICAgICAgdGhpcy5zZW5kKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHN0cmluZ2lmeUFjY291bnRJZCh0cmFuc2ZlckRhdGEuYWNjb3VudElEISksXG4gICAgICAgICAgICBhbW91bnQ6IGFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiB0b2tlbi5uYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiBUcmFuc2ZlciBmaWVsZHNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiB0aGlzIHtcbiAgICBpZiAoIXJlY2lwaWVudC50b2tlbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCBtaXNzaW5nIHRva2VuIG5hbWUnKTtcbiAgICB9XG4gICAgY29uc3QgdG9rZW5JZCA9IGdldEhlZGVyYVRva2VuSWRGcm9tTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICBpZiAoIXRva2VuSWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcihgSW52YWxpZCB0b2tlbiBuYW1lOiAke3JlY2lwaWVudC50b2tlbk5hbWV9YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl90b2tlbk5hbWUgJiYgdGhpcy5fdG9rZW5OYW1lICE9PSByZWNpcGllbnQudG9rZW5OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoYEludmFsaWQgdG9rZW46IHJlY2VpdmVkICR7cmVjaXBpZW50LnRva2VuTmFtZX0gZm9yICR7dGhpcy5fdG9rZW5OYW1lfSB0eGApO1xuICAgIH1cbiAgICB0aGlzLl90b2tlbk5hbWUgPSByZWNpcGllbnQudG9rZW5OYW1lO1xuICAgIHJldHVybiBzdXBlci5zZW5kKHJlY2lwaWVudCk7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -44,9 +48,9 @@ class Transaction extends sdk_core_1.BaseTransaction {
44
48
  if (!keys.prv) {
45
49
  throw new sdk_core_1.SigningError('Missing private key');
46
50
  }
47
- const secretKey = sdk_core_1.toUint8Array(keys.prv + keys.pub);
51
+ const secretKey = (0, sdk_core_1.toUint8Array)(keys.prv + keys.pub);
48
52
  const signature = nacl.sign.detached(this._hederaTx.bodyBytes, secretKey);
49
- this.addSignature(sdk_core_1.toHex(signature), keyPair);
53
+ this.addSignature((0, sdk_core_1.toHex)(signature), keyPair);
50
54
  }
51
55
  /**
52
56
  * Add a signature to this transaction
@@ -56,8 +60,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
56
60
  */
57
61
  addSignature(signature, key) {
58
62
  const sigPair = new proto_1.proto.SignaturePair();
59
- sigPair.pubKeyPrefix = sdk_core_1.toUint8Array(key.getKeys(true).pub);
60
- sigPair.ed25519 = sdk_core_1.toUint8Array(signature);
63
+ sigPair.pubKeyPrefix = (0, sdk_core_1.toUint8Array)(key.getKeys(true).pub);
64
+ sigPair.ed25519 = (0, sdk_core_1.toUint8Array)(signature);
61
65
  const sigMap = this._hederaTx.sigMap || new proto_1.proto.SignatureMap();
62
66
  sigMap.sigPair.push(sigPair);
63
67
  this._hederaTx.sigMap = sigMap;
@@ -66,7 +70,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
66
70
  /** @inheritdoc */
67
71
  toBroadcastFormat() {
68
72
  const encoder = proto_1.proto.Transaction;
69
- return sdk_core_1.toHex(this.encode(this._hederaTx, encoder));
73
+ return (0, sdk_core_1.toHex)(this.encode(this._hederaTx, encoder));
70
74
  }
71
75
  /**
72
76
  * Sets this transaction payload
@@ -74,7 +78,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
74
78
  * @param rawTransaction
75
79
  */
76
80
  fromRawTransaction(rawTransaction) {
77
- const buffer = typeof rawTransaction === 'string' ? sdk_core_1.toUint8Array(rawTransaction) : rawTransaction;
81
+ const buffer = typeof rawTransaction === 'string' ? (0, sdk_core_1.toUint8Array)(rawTransaction) : rawTransaction;
78
82
  this.bodyBytes(buffer);
79
83
  switch (this.txBody.data) {
80
84
  case constants_1.HederaTransactionTypes.Transfer:
@@ -94,12 +98,12 @@ class Transaction extends sdk_core_1.BaseTransaction {
94
98
  const result = {
95
99
  id: acc + '@' + time,
96
100
  hash: this.getTxHash(),
97
- data: sdk_core_1.toHex(this._hederaTx.bodyBytes),
101
+ data: (0, sdk_core_1.toHex)(this._hederaTx.bodyBytes),
98
102
  fee: new bignumber_js_1.default(this._txBody.transactionFee.toString()).toNumber(),
99
103
  from: acc,
100
104
  startTime: time,
101
105
  validDuration: this._txBody.transactionValidDuration.seconds.toString(),
102
- node: utils_1.stringifyAccountId(this._txBody.nodeAccountID),
106
+ node: (0, utils_1.stringifyAccountId)(this._txBody.nodeAccountID),
103
107
  memo: this._txBody.memo,
104
108
  };
105
109
  switch (this._txBody.data) {
@@ -134,13 +138,13 @@ class Transaction extends sdk_core_1.BaseTransaction {
134
138
  const tokenTransfers = ((_a = this._txBody.cryptoTransfer) === null || _a === void 0 ? void 0 : _a.tokenTransfers) || [];
135
139
  const transfers = ((_b = tokenTransfers[0]) === null || _b === void 0 ? void 0 : _b.transfers) || ((_d = (_c = this._txBody.cryptoTransfer) === null || _c === void 0 ? void 0 : _c.transfers) === null || _d === void 0 ? void 0 : _d.accountAmounts) || [];
136
140
  const tokenName = tokenTransfers.length
137
- ? (_e = utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(tokenTransfers[0].token))) === null || _e === void 0 ? void 0 : _e.name
141
+ ? (_e = (0, utils_1.getHederaTokenNameFromId)((0, utils_1.stringifyTokenId)(tokenTransfers[0].token))) === null || _e === void 0 ? void 0 : _e.name
138
142
  : undefined;
139
143
  transfers.forEach((transfer) => {
140
144
  const amount = Long.fromValue(transfer.amount);
141
- if (amount.isPositive() && utils_1.stringifyAccountId(transfer.accountID) !== acc) {
145
+ if (amount.isPositive() && (0, utils_1.stringifyAccountId)(transfer.accountID) !== acc) {
142
146
  transferData.push({
143
- address: utils_1.stringifyAccountId(transfer.accountID),
147
+ address: (0, utils_1.stringifyAccountId)(transfer.accountID),
144
148
  amount: amount.toString(),
145
149
  ...(tokenTransfers.length && {
146
150
  tokenName: tokenName,
@@ -165,8 +169,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
165
169
  getAccountAssociateData() {
166
170
  const tokens = this._txBody.tokenAssociate.tokens || [];
167
171
  return {
168
- accountId: utils_1.stringifyAccountId(this._txBody.tokenAssociate.account),
169
- tokenNames: tokens.map((token) => utils_1.getHederaTokenNameFromId(utils_1.stringifyTokenId(token)).name),
172
+ accountId: (0, utils_1.stringifyAccountId)(this._txBody.tokenAssociate.account),
173
+ tokenNames: tokens.map((token) => (0, utils_1.getHederaTokenNameFromId)((0, utils_1.stringifyTokenId)(token)).name),
170
174
  };
171
175
  }
172
176
  // region getters & setters
@@ -204,7 +208,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
204
208
  sigPairs.forEach((sigPair) => {
205
209
  const signature = sigPair.ed25519;
206
210
  if (signature) {
207
- this._signatures.push(sdk_core_1.toHex(signature));
211
+ this._signatures.push((0, sdk_core_1.toHex)(signature));
208
212
  }
209
213
  });
210
214
  }
@@ -272,8 +276,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
272
276
  this._txBody.transactionID.accountID &&
273
277
  this._txBody.transactionID.transactionValidStart) {
274
278
  return [
275
- utils_1.stringifyAccountId(this._txBody.transactionID.accountID),
276
- utils_1.stringifyTxTime(this._txBody.transactionID.transactionValidStart),
279
+ (0, utils_1.stringifyAccountId)(this._txBody.transactionID.accountID),
280
+ (0, utils_1.stringifyTxTime)(this._txBody.transactionID.transactionValidStart),
277
281
  ];
278
282
  }
279
283
  throw new Error('Missing transaction id information');
@@ -310,8 +314,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
310
314
  * @returns {string} - The resulting hash string
311
315
  */
312
316
  sha(bytes) {
313
- return sdk_core_1.toHex(sha384_1.hash(bytes));
317
+ return (0, sdk_core_1.toHex)((0, sha384_1.hash)(bytes));
314
318
  }
315
319
  }
316
320
  exports.Transaction = Transaction;
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtREFBMkg7QUFDM0gsOENBQXlDO0FBQ3pDLGdFQUFxQztBQUVyQyxnREFBa0M7QUFDbEMsMkNBQTZCO0FBQzdCLDRDQUF5QztBQUV6QyxtQ0FBMEc7QUFFMUcsMkNBQXFEO0FBRXJELE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFnQjtRQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTSxJQUFJLHVCQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUMvQztRQUNELE1BQU0sU0FBUyxHQUFHLHVCQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxTQUFpQixFQUFFLEdBQVk7UUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFLLENB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LENBQUMsTUFBTSxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFFL0MsTUFBTSxPQUFPLEdBQUcsYUFBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQ1osR0FBTSxFQUNOLE9BQW1DO1FBRW5DLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsS0FBaUI7UUFDbkIsT0FBTyxnQkFBSyxDQUFDLGFBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7Q0FDRjtBQTdURCxrQ0E2VEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCYXNlVHJhbnNhY3Rpb24sIEVudHJ5LCBTaWduaW5nRXJyb3IsIHRvSGV4LCB0b1VpbnQ4QXJyYXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGhhc2ggfSBmcm9tICdAc3RhYmxlbGliL3NoYTM4NCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBXcml0ZXIgfSBmcm9tICdwcm90b2J1ZmpzJztcbmltcG9ydCAqIGFzIG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCAqIGFzIExvbmcgZnJvbSAnbG9uZyc7XG5pbXBvcnQgeyBwcm90byB9IGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IHsgVHhEYXRhLCBSZWNpcGllbnQgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IHN0cmluZ2lmeUFjY291bnRJZCwgc3RyaW5naWZ5VHhUaW1lLCBzdHJpbmdpZnlUb2tlbklkLCBnZXRIZWRlcmFUb2tlbk5hbWVGcm9tSWQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuLyc7XG5pbXBvcnQgeyBIZWRlcmFUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9oZWRlcmFUeDogcHJvdG8uVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3R4Qm9keTogcHJvdG8uVHJhbnNhY3Rpb25Cb2R5O1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXModHJ1ZSk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBzZWNyZXRLZXkgPSB0b1VpbnQ4QXJyYXkoa2V5cy5wcnYgKyBrZXlzLnB1Yik7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmFjbC5zaWduLmRldGFjaGVkKHRoaXMuX2hlZGVyYVR4LmJvZHlCeXRlcywgc2VjcmV0S2V5KTtcbiAgICB0aGlzLmFkZFNpZ25hdHVyZSh0b0hleChzaWduYXR1cmUpLCBrZXlQYWlyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzaWduYXR1cmUgdG8gdGhpcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIC0gVGhlIHNpZ25hdHVyZSB0byBhZGQsIGluIHN0cmluZyBoZXggZm9ybWF0XG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5IC0gVGhlIGtleSBvZiB0aGUga2V5IHRoYXQgY3JlYXRlZCB0aGUgc2lnbmF0dXJlXG4gICAqL1xuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcsIGtleTogS2V5UGFpcik6IHZvaWQge1xuICAgIGNvbnN0IHNpZ1BhaXIgPSBuZXcgcHJvdG8uU2lnbmF0dXJlUGFpcigpO1xuICAgIHNpZ1BhaXIucHViS2V5UHJlZml4ID0gdG9VaW50OEFycmF5KGtleS5nZXRLZXlzKHRydWUpLnB1Yik7XG4gICAgc2lnUGFpci5lZDI1NTE5ID0gdG9VaW50OEFycmF5KHNpZ25hdHVyZSk7XG5cbiAgICBjb25zdCBzaWdNYXAgPSB0aGlzLl9oZWRlcmFUeC5zaWdNYXAgfHwgbmV3IHByb3RvLlNpZ25hdHVyZU1hcCgpO1xuICAgIHNpZ01hcC5zaWdQYWlyIS5wdXNoKHNpZ1BhaXIpO1xuICAgIHRoaXMuX2hlZGVyYVR4LnNpZ01hcCA9IHNpZ01hcDtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuY29kZXIgPSBwcm90by5UcmFuc2FjdGlvbjtcbiAgICByZXR1cm4gdG9IZXgodGhpcy5lbmNvZGUodGhpcy5faGVkZXJhVHgsIGVuY29kZXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogVWludDhBcnJheSB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGJ1ZmZlciA9IHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycgPyB0b1VpbnQ4QXJyYXkocmF3VHJhbnNhY3Rpb24pIDogcmF3VHJhbnNhY3Rpb247XG4gICAgdGhpcy5ib2R5Qnl0ZXMoYnVmZmVyKTtcbiAgICBzd2l0Y2ggKHRoaXMudHhCb2R5LmRhdGEpIHtcbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5UcmFuc2ZlcjpcbiAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlNlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5DcmVhdGVBY2NvdW50OlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5Ub2tlbkFzc29jaWF0ZVRvQWNjb3VudDpcbiAgICAgICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBbYWNjLCB0aW1lXSA9IHRoaXMuZ2V0VHhJZFBhcnRzKCk7XG4gICAgY29uc3QgcmVzdWx0OiBUeERhdGEgPSB7XG4gICAgICBpZDogYWNjICsgJ0AnICsgdGltZSxcbiAgICAgIGhhc2g6IHRoaXMuZ2V0VHhIYXNoKCksIC8vIFRPRE86IFVwZGF0ZSBvbmNlIGhlZGVyYS1zZGsgcmVsZWFzZSB0aGlzIGZ1bmN0aW9uYWxpdHkgQkdBLTI4NFxuICAgICAgZGF0YTogdG9IZXgodGhpcy5faGVkZXJhVHguYm9keUJ5dGVzKSxcbiAgICAgIGZlZTogbmV3IEJpZ051bWJlcih0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25GZWUhLnRvU3RyaW5nKCkpLnRvTnVtYmVyKCksXG4gICAgICBmcm9tOiBhY2MsXG4gICAgICBzdGFydFRpbWU6IHRpbWUsXG4gICAgICB2YWxpZER1cmF0aW9uOiB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25WYWxpZER1cmF0aW9uIS5zZWNvbmRzIS50b1N0cmluZygpLFxuICAgICAgbm9kZTogc3RyaW5naWZ5QWNjb3VudElkKHRoaXMuX3R4Qm9keS5ub2RlQWNjb3VudElEISksXG4gICAgICBtZW1vOiB0aGlzLl90eEJvZHkubWVtbyxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLl90eEJvZHkuZGF0YSkge1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyOlxuICAgICAgICByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YSA9IHtcbiAgICAgICAgICB0eXBlOiBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyLFxuICAgICAgICAgIHBhcmFtczogdGhpcy5nZXRUcmFuc2ZlckRhdGEoKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmVzdWx0LnRvID0gcmVzdWx0Lmluc3RydWN0aW9uc0RhdGEucGFyYW1zLnJlY2lwaWVudHNbMF0uYWRkcmVzcztcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhLnBhcmFtcy5yZWNpcGllbnRzWzBdLmFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVG9rZW5Bc3NvY2lhdGVUb0FjY291bnQ6XG4gICAgICAgIHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhID0ge1xuICAgICAgICAgIHR5cGU6IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVG9rZW5Bc3NvY2lhdGVUb0FjY291bnQsXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmdldEFjY291bnRBc3NvY2lhdGVEYXRhKCksXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNpcGllbnQgYWNjb3VudCBhbmQgdGhlIGFtb3VudFxuICAgKiB0cmFuc2ZlcnJlZCBvbiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHsgdG9rZW5OYW1lLCBSZWNpcGllbnRbXX0gaXMgb2JqZWN0IGNvbnNpc3Rpbmcgb2YgdG9rZW5OYW1lIGlmIGl0J3MgYSB0b2tlbiB0cmFuc2ZlciBhbmQgcmVjaXBpZW50cyBjb25zaXN0aW5nXG4gICAqICB0aGUgcmVjaXBpZW50IGFkZHJlc3MsIHRoZSB0cmFuc2ZlciBhbW91bnQsIGFuZCB0aGUgdG9rZW4gbmFtZSBmb3IgdG9rZW4gdHJhbnNmZXJcbiAgICovXG4gIHByaXZhdGUgZ2V0VHJhbnNmZXJEYXRhKCk6IHsgdG9rZW5OYW1lPzogc3RyaW5nOyByZWNpcGllbnRzOiBSZWNpcGllbnRbXSB9IHtcbiAgICBjb25zdCBbYWNjXSA9IHRoaXMuZ2V0VHhJZFBhcnRzKCk7XG4gICAgY29uc3QgdHJhbnNmZXJEYXRhOiBSZWNpcGllbnRbXSA9IFtdO1xuICAgIGNvbnN0IHRva2VuVHJhbnNmZXJzOiBwcm90by5JVG9rZW5UcmFuc2Zlckxpc3RbXSA9IHRoaXMuX3R4Qm9keS5jcnlwdG9UcmFuc2Zlcj8udG9rZW5UcmFuc2ZlcnMgfHwgW107XG4gICAgY29uc3QgdHJhbnNmZXJzOiBwcm90by5JQWNjb3VudEFtb3VudFtdID1cbiAgICAgIHRva2VuVHJhbnNmZXJzWzBdPy50cmFuc2ZlcnMgfHwgdGhpcy5fdHhCb2R5LmNyeXB0b1RyYW5zZmVyPy50cmFuc2ZlcnM/LmFjY291bnRBbW91bnRzIHx8IFtdO1xuICAgIGNvbnN0IHRva2VuTmFtZSA9IHRva2VuVHJhbnNmZXJzLmxlbmd0aFxuICAgICAgPyBnZXRIZWRlcmFUb2tlbk5hbWVGcm9tSWQoc3RyaW5naWZ5VG9rZW5JZCh0b2tlblRyYW5zZmVyc1swXS50b2tlbiEpKT8ubmFtZVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICB0cmFuc2ZlcnMuZm9yRWFjaCgodHJhbnNmZXIpID0+IHtcbiAgICAgIGNvbnN0IGFtb3VudCA9IExvbmcuZnJvbVZhbHVlKHRyYW5zZmVyLmFtb3VudCEpO1xuICAgICAgaWYgKGFtb3VudC5pc1Bvc2l0aXZlKCkgJiYgc3RyaW5naWZ5QWNjb3VudElkKHRyYW5zZmVyLmFjY291bnRJRCEpICE9PSBhY2MpIHtcbiAgICAgICAgdHJhbnNmZXJEYXRhLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHN0cmluZ2lmeUFjY291bnRJZCh0cmFuc2Zlci5hY2NvdW50SUQhKSxcbiAgICAgICAgICBhbW91bnQ6IGFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIC4uLih0b2tlblRyYW5zZmVycy5sZW5ndGggJiYge1xuICAgICAgICAgICAgdG9rZW5OYW1lOiB0b2tlbk5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLih0b2tlblRyYW5zZmVycy5sZW5ndGggJiYge1xuICAgICAgICB0b2tlbk5hbWU6IHRva2VuTmFtZSxcbiAgICAgIH0pLFxuICAgICAgcmVjaXBpZW50czogdHJhbnNmZXJEYXRhLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSByZWNpcGllbnQgYWNjb3VudCBhbmQgdGhlIGFtb3VudFxuICAgKiB0cmFuc2ZlcnJlZCBvbiB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEByZXR1cm5zIHsgYWNjb3VudElkOiBzdHJpbmc7IHRva2VuTmFtZXNbXX0gaXMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgYWNjb3VudElkIGZvciB0aGUgdG9rZW4gb3duZXJcbiAgICogIGFuZCBsaXN0IG9mIHRva2VuTmFtZXMgdGhhdCB3aWxsIGJlIGVuYWJsZWRcbiAgICovXG4gIHByaXZhdGUgZ2V0QWNjb3VudEFzc29jaWF0ZURhdGEoKTogeyBhY2NvdW50SWQ6IHN0cmluZzsgdG9rZW5OYW1lczogc3RyaW5nW10gfSB7XG4gICAgY29uc3QgdG9rZW5zOiBwcm90by5JVG9rZW5JRFtdID0gdGhpcy5fdHhCb2R5LnRva2VuQXNzb2NpYXRlIS50b2tlbnMgfHwgW107XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnRJZDogc3RyaW5naWZ5QWNjb3VudElkKHRoaXMuX3R4Qm9keS50b2tlbkFzc29jaWF0ZSEuYWNjb3VudCEpLFxuICAgICAgdG9rZW5OYW1lczogdG9rZW5zLm1hcCgodG9rZW46IHByb3RvLklUb2tlbklEKSA9PiBnZXRIZWRlcmFUb2tlbk5hbWVGcm9tSWQoc3RyaW5naWZ5VG9rZW5JZCh0b2tlbikpIS5uYW1lKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gcmVnaW9uIGdldHRlcnMgJiBzZXR0ZXJzXG4gIGdldCB0eEJvZHkoKTogcHJvdG8uVHJhbnNhY3Rpb25Cb2R5IHtcbiAgICByZXR1cm4gdGhpcy5fdHhCb2R5O1xuICB9XG5cbiAgZ2V0IGhlZGVyYVR4KCk6IHByb3RvLlRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5faGVkZXJhVHg7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIGJvZHkgY29tcG9uZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge3Byb3RvLlRyYW5zYWN0aW9ufSB0eCAtIEJvZHkgVHJhbnNhY3Rpb25cbiAgICovXG4gIGJvZHkodHg6IHByb3RvLlRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdHhCb2R5ID0gcHJvdG8uVHJhbnNhY3Rpb25Cb2R5LmRlY29kZSh0eC5ib2R5Qnl0ZXMpO1xuICAgIHRoaXMuX2hlZGVyYVR4ID0gdHg7XG4gICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIC0gVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSBwcmV2aW91cyBzaWduYXR1cmVzIGZyb20gdGhlIGlubmVyIGhlZGVyYSB0cmFuc2FjdGlvblxuICAgKiBhbmQgc2F2ZSB0aGVtIGludG8gdGhlIGJhc2UgdHJhbnNhY3Rpb24gc2lnbmF0dXJlIGxpc3QuXG4gICAqL1xuICBsb2FkUHJldmlvdXNTaWduYXR1cmVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oZWRlcmFUeC5zaWdNYXAgJiYgdGhpcy5faGVkZXJhVHguc2lnTWFwLnNpZ1BhaXIpIHtcbiAgICAgIGNvbnN0IHNpZ1BhaXJzID0gdGhpcy5faGVkZXJhVHguc2lnTWFwLnNpZ1BhaXI7XG4gICAgICBzaWdQYWlycy5mb3JFYWNoKChzaWdQYWlyKSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ1BhaXIuZWQyNTUxOTtcbiAgICAgICAgaWYgKHNpZ25hdHVyZSkge1xuICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh0b0hleChzaWduYXR1cmUpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBqc29uXG4gICAqIGlmIHRoZXJlIGFyZSBvdXRwdXRzLiBGb3IgdHJhbnNhY3Rpb25zIHdpdGhvdXQgb3V0cHV0cyAoZS5nLiB3YWxsZXQgaW5pdGlhbGl6YXRpb25zKSxcbiAgICogdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBkbyBhbnl0aGluZ1xuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBpbnN0cnVjdGlvbiA9IHR4SnNvbi5pbnN0cnVjdGlvbnNEYXRhO1xuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcblxuICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24/LnR5cGUpIHtcbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5UcmFuc2ZlcjpcbiAgICAgICAgbGV0IHRvdGFsQW1vdW50ID0gbmV3IEJpZ051bWJlcigwKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLnJlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgICAgdG90YWxBbW91bnQgPSB0b3RhbEFtb3VudC5wbHVzKHJlY2lwaWVudC5hbW91bnQpO1xuICAgICAgICAgIG91dHB1dHMucHVzaCh7XG4gICAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiByZWNpcGllbnQuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogcmVjaXBpZW50LnRva2VuTmFtZSB8fCB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogdHhKc29uLmZyb20sXG4gICAgICAgICAgdmFsdWU6IHRvdGFsQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgY29pbjogaW5zdHJ1Y3Rpb24ucGFyYW1zLnRva2VuTmFtZSB8fCB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICBpbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lcy5mb3JFYWNoKCh0b2tlbk5hbWUpID0+IHtcbiAgICAgICAgICBjb25zdCB0b2tlbkVudHJ5OiBFbnRyeSA9IHtcbiAgICAgICAgICAgIGFkZHJlc3M6IGluc3RydWN0aW9uLnBhcmFtcy5hY2NvdW50SWQsXG4gICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgY29pbjogdG9rZW5OYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgaW5wdXRzLnB1c2godG9rZW5FbnRyeSk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHRva2VuRW50cnkpO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gYm9keSBjb21wb25lbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMgLSBFbmNvZGVkIGJvZHkgdHJhbnNhY3Rpb25cbiAgICovXG4gIGJvZHlCeXRlcyhieXRlczogVWludDhBcnJheSk6IHZvaWQge1xuICAgIHRoaXMuYm9keShwcm90by5UcmFuc2FjdGlvbi5kZWNvZGUoYnl0ZXMpKTtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gaGVscGVyc1xuICAvKipcbiAgICogUmV0dXJucyB0aGlzIGhlZGVyYSB0cmFuc2FjdGlvbiBpZCBjb21wb25lbnRzIGluIGEgcmVhZGFibGUgZm9ybWF0XG4gICAqXG4gICAqIEByZXR1cm5zIHtbc3RyaW5nLCBzdHJpbmddfSAtIFRyYW5zYWN0aW9uIGlkIHBhcnRzIFs8YWNjb3VudCBpZD4sIDxzdGFydFRpbWUgaW4gc2Vjb25kcz5dXG4gICAqL1xuICBnZXRUeElkUGFydHMoKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fdHhCb2R5ICYmXG4gICAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRCAmJlxuICAgICAgdGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQuYWNjb3VudElEICYmXG4gICAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC50cmFuc2FjdGlvblZhbGlkU3RhcnRcbiAgICApIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHN0cmluZ2lmeUFjY291bnRJZCh0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC5hY2NvdW50SUQpLFxuICAgICAgICBzdHJpbmdpZnlUeFRpbWUodGhpcy5fdHhCb2R5LnRyYW5zYWN0aW9uSUQudHJhbnNhY3Rpb25WYWxpZFN0YXJ0KSxcbiAgICAgIF07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBpZCBpbmZvcm1hdGlvbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyB0cmFuc2FjdGlvbiBoYXNoXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRyYW5zYWN0aW9uIGhhc2hcbiAgICovXG4gIGdldFR4SGFzaCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyB0cmFuc2FjdGlvbiBub2RlIGlkJyk7XG4gICAgfVxuICAgIGNvbnN0IF9zaWduZWRUeCA9IG5ldyBwcm90by5TaWduZWRUcmFuc2FjdGlvbigpO1xuICAgIF9zaWduZWRUeC5zaWdNYXAgPSB0aGlzLl9oZWRlcmFUeC5zaWdNYXA7XG4gICAgX3NpZ25lZFR4LmJvZHlCeXRlcyA9IHRoaXMuX2hlZGVyYVR4LmJvZHlCeXRlcztcblxuICAgIGNvbnN0IGVuY29kZXIgPSBwcm90by5TaWduZWRUcmFuc2FjdGlvbjtcbiAgICByZXR1cm4gdGhpcy5zaGEodGhpcy5lbmNvZGUoX3NpZ25lZFR4LCBlbmNvZGVyKSk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlIGFuIG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gZW5jb2RlciBjbGFzc1xuICAgKlxuICAgKiBAcGFyYW0ge3Byb3RvfSBvYmogLSBUaGUgb2JqZWN0IHRvIGJlIGVuY29kZWQsIG11c3QgYmUgaW4gcHJvdG8gbmFtZXNwYWNlXG4gICAqIEBwYXJhbSBlbmNvZGVyIC0gT2JqZWN0IGVuY29kZXJcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IC0gRW5jb2RlZCBvYmplY3QgYnl0ZSBhcnJheVxuICAgKi9cbiAgcHJpdmF0ZSBlbmNvZGU8Q3RvckZuIGV4dGVuZHMgeyBuZXcgKCk6IFQgfSwgVCBleHRlbmRzIHsgY29uc3RydWN0b3I6IEN0b3JGbiB9PihcbiAgICBvYmo6IFQsXG4gICAgZW5jb2RlcjogeyBlbmNvZGUoYXJnOiBUKTogV3JpdGVyIH1cbiAgKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIGVuY29kZXIuZW5jb2RlKG9iaikuZmluaXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNoYS0zODQgaGFzaFxuICAgKlxuICAgKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzIC0gQnl0ZXMgdG8gYmUgaGFzaGVkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHJlc3VsdGluZyBoYXNoIHN0cmluZ1xuICAgKi9cbiAgc2hhKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdG9IZXgoaGFzaChieXRlcykpO1xuICB9XG59XG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsbURBQTJIO0FBQzNILDhDQUF5QztBQUN6QyxnRUFBcUM7QUFFckMsZ0RBQWtDO0FBQ2xDLDJDQUE2QjtBQUM3Qiw0Q0FBeUM7QUFFekMsbUNBQTBHO0FBRTFHLDJDQUFxRDtBQUVyRCxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQUs5QyxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBZ0I7UUFDekIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDL0M7UUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFZLEVBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFBLGdCQUFLLEVBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFNBQWlCLEVBQUUsR0FBWTtRQUMxQyxNQUFNLE9BQU8sR0FB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RDtRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6QyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBRS9DLE1BQU0sT0FBTyxHQUFHLGFBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssTUFBTSxDQUNaLEdBQU0sRUFDTixPQUFtQztRQUVuQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLEtBQWlCO1FBQ25CLE9BQU8sSUFBQSxnQkFBSyxFQUFDLElBQUEsYUFBSSxFQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBN1RELGtDQTZUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgRW50cnksIFNpZ25pbmdFcnJvciwgdG9IZXgsIHRvVWludDhBcnJheSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gJ0BzdGFibGVsaWIvc2hhMzg0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFdyaXRlciB9IGZyb20gJ3Byb3RvYnVmanMnO1xuaW1wb3J0ICogYXMgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0ICogYXMgTG9uZyBmcm9tICdsb25nJztcbmltcG9ydCB7IHByb3RvIH0gZnJvbSAnQGhhc2hncmFwaC9wcm90byc7XG5pbXBvcnQgeyBUeERhdGEsIFJlY2lwaWVudCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgc3RyaW5naWZ5QWNjb3VudElkLCBzdHJpbmdpZnlUeFRpbWUsIHN0cmluZ2lmeVRva2VuSWQsIGdldEhlZGVyYVRva2VuTmFtZUZyb21JZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4vJztcbmltcG9ydCB7IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX2hlZGVyYVR4OiBwcm90by5UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfdHhCb2R5OiBwcm90by5UcmFuc2FjdGlvbkJvZHk7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cyh0cnVlKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNlY3JldEtleSA9IHRvVWludDhBcnJheShrZXlzLnBydiArIGtleXMucHViKTtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBuYWNsLnNpZ24uZGV0YWNoZWQodGhpcy5faGVkZXJhVHguYm9keUJ5dGVzLCBzZWNyZXRLZXkpO1xuICAgIHRoaXMuYWRkU2lnbmF0dXJlKHRvSGV4KHNpZ25hdHVyZSksIGtleVBhaXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpZ25hdHVyZSB0byB0aGlzIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgLSBUaGUgc2lnbmF0dXJlIHRvIGFkZCwgaW4gc3RyaW5nIGhleCBmb3JtYXRcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBrZXkgdGhhdCBjcmVhdGVkIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5OiBLZXlQYWlyKTogdm9pZCB7XG4gICAgY29uc3Qgc2lnUGFpciA9IG5ldyBwcm90by5TaWduYXR1cmVQYWlyKCk7XG4gICAgc2lnUGFpci5wdWJLZXlQcmVmaXggPSB0b1VpbnQ4QXJyYXkoa2V5LmdldEtleXModHJ1ZSkucHViKTtcbiAgICBzaWdQYWlyLmVkMjU1MTkgPSB0b1VpbnQ4QXJyYXkoc2lnbmF0dXJlKTtcblxuICAgIGNvbnN0IHNpZ01hcCA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcCB8fCBuZXcgcHJvdG8uU2lnbmF0dXJlTWFwKCk7XG4gICAgc2lnTWFwLnNpZ1BhaXIhLnB1c2goc2lnUGFpcik7XG4gICAgdGhpcy5faGVkZXJhVHguc2lnTWFwID0gc2lnTWFwO1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlciA9IHByb3RvLlRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB0b0hleCh0aGlzLmVuY29kZSh0aGlzLl9oZWRlcmFUeCwgZW5jb2RlcikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBwYXlsb2FkXG4gICAqXG4gICAqIEBwYXJhbSByYXdUcmFuc2FjdGlvblxuICAgKi9cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgYnVmZmVyID0gdHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJyA/IHRvVWludDhBcnJheShyYXdUcmFuc2FjdGlvbikgOiByYXdUcmFuc2FjdGlvbjtcbiAgICB0aGlzLmJvZHlCeXRlcyhidWZmZXIpO1xuICAgIHN3aXRjaCAodGhpcy50eEJvZHkuZGF0YSkge1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyOlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLkNyZWF0ZUFjY291bnQ6XG4gICAgICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRva2VuQXNzb2NpYXRlVG9BY2NvdW50OlxuICAgICAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IFthY2MsIHRpbWVdID0gdGhpcy5nZXRUeElkUGFydHMoKTtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiBhY2MgKyAnQCcgKyB0aW1lLFxuICAgICAgaGFzaDogdGhpcy5nZXRUeEhhc2goKSwgLy8gVE9ETzogVXBkYXRlIG9uY2UgaGVkZXJhLXNkayByZWxlYXNlIHRoaXMgZnVuY3Rpb25hbGl0eSBCR0EtMjg0XG4gICAgICBkYXRhOiB0b0hleCh0aGlzLl9oZWRlcmFUeC5ib2R5Qnl0ZXMpLFxuICAgICAgZmVlOiBuZXcgQmlnTnVtYmVyKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSEudG9TdHJpbmcoKSkudG9OdW1iZXIoKSxcbiAgICAgIGZyb206IGFjYyxcbiAgICAgIHN0YXJ0VGltZTogdGltZSxcbiAgICAgIHZhbGlkRHVyYXRpb246IHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24hLnNlY29uZHMhLnRvU3RyaW5nKCksXG4gICAgICBub2RlOiBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5Lm5vZGVBY2NvdW50SUQhKSxcbiAgICAgIG1lbW86IHRoaXMuX3R4Qm9keS5tZW1vLFxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3R4Qm9keS5kYXRhKSB7XG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXI6XG4gICAgICAgIHJlc3VsdC5pbnN0cnVjdGlvbnNEYXRhID0ge1xuICAgICAgICAgIHR5cGU6IEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgICAgcGFyYW1zOiB0aGlzLmdldFRyYW5zZmVyRGF0YSgpLFxuICAgICAgICB9O1xuICAgICAgICByZXN1bHQudG8gPSByZXN1bHQuaW5zdHJ1Y3Rpb25zRGF0YS5wYXJhbXMucmVjaXBpZW50c1swXS5hZGRyZXNzO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gcmVzdWx0Lmluc3RydWN0aW9uc0RhdGEucGFyYW1zLnJlY2lwaWVudHNbMF0uYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5Ub2tlbkFzc29jaWF0ZVRvQWNjb3VudDpcbiAgICAgICAgcmVzdWx0Lmluc3RydWN0aW9uc0RhdGEgPSB7XG4gICAgICAgICAgdHlwZTogSGVkZXJhVHJhbnNhY3Rpb25UeXBlcy5Ub2tlbkFzc29jaWF0ZVRvQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHRoaXMuZ2V0QWNjb3VudEFzc29jaWF0ZURhdGEoKSxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlY2lwaWVudCBhY2NvdW50IGFuZCB0aGUgYW1vdW50XG4gICAqIHRyYW5zZmVycmVkIG9uIHRoaXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMgeyB0b2tlbk5hbWUsIFJlY2lwaWVudFtdfSBpcyBvYmplY3QgY29uc2lzdGluZyBvZiB0b2tlbk5hbWUgaWYgaXQncyBhIHRva2VuIHRyYW5zZmVyIGFuZCByZWNpcGllbnRzIGNvbnNpc3RpbmdcbiAgICogIHRoZSByZWNpcGllbnQgYWRkcmVzcywgdGhlIHRyYW5zZmVyIGFtb3VudCwgYW5kIHRoZSB0b2tlbiBuYW1lIGZvciB0b2tlbiB0cmFuc2ZlclxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUcmFuc2ZlckRhdGEoKTogeyB0b2tlbk5hbWU/OiBzdHJpbmc7IHJlY2lwaWVudHM6IFJlY2lwaWVudFtdIH0ge1xuICAgIGNvbnN0IFthY2NdID0gdGhpcy5nZXRUeElkUGFydHMoKTtcbiAgICBjb25zdCB0cmFuc2ZlckRhdGE6IFJlY2lwaWVudFtdID0gW107XG4gICAgY29uc3QgdG9rZW5UcmFuc2ZlcnM6IHByb3RvLklUb2tlblRyYW5zZmVyTGlzdFtdID0gdGhpcy5fdHhCb2R5LmNyeXB0b1RyYW5zZmVyPy50b2tlblRyYW5zZmVycyB8fCBbXTtcbiAgICBjb25zdCB0cmFuc2ZlcnM6IHByb3RvLklBY2NvdW50QW1vdW50W10gPVxuICAgICAgdG9rZW5UcmFuc2ZlcnNbMF0/LnRyYW5zZmVycyB8fCB0aGlzLl90eEJvZHkuY3J5cHRvVHJhbnNmZXI/LnRyYW5zZmVycz8uYWNjb3VudEFtb3VudHMgfHwgW107XG4gICAgY29uc3QgdG9rZW5OYW1lID0gdG9rZW5UcmFuc2ZlcnMubGVuZ3RoXG4gICAgICA/IGdldEhlZGVyYVRva2VuTmFtZUZyb21JZChzdHJpbmdpZnlUb2tlbklkKHRva2VuVHJhbnNmZXJzWzBdLnRva2VuISkpPy5uYW1lXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRyYW5zZmVycy5mb3JFYWNoKCh0cmFuc2ZlcikgPT4ge1xuICAgICAgY29uc3QgYW1vdW50ID0gTG9uZy5mcm9tVmFsdWUodHJhbnNmZXIuYW1vdW50ISk7XG4gICAgICBpZiAoYW1vdW50LmlzUG9zaXRpdmUoKSAmJiBzdHJpbmdpZnlBY2NvdW50SWQodHJhbnNmZXIuYWNjb3VudElEISkgIT09IGFjYykge1xuICAgICAgICB0cmFuc2ZlckRhdGEucHVzaCh7XG4gICAgICAgICAgYWRkcmVzczogc3RyaW5naWZ5QWNjb3VudElkKHRyYW5zZmVyLmFjY291bnRJRCEpLFxuICAgICAgICAgIGFtb3VudDogYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgICAgLi4uKHRva2VuVHJhbnNmZXJzLmxlbmd0aCAmJiB7XG4gICAgICAgICAgICB0b2tlbk5hbWU6IHRva2VuTmFtZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHRva2VuVHJhbnNmZXJzLmxlbmd0aCAmJiB7XG4gICAgICAgIHRva2VuTmFtZTogdG9rZW5OYW1lLFxuICAgICAgfSksXG4gICAgICByZWNpcGllbnRzOiB0cmFuc2ZlckRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlY2lwaWVudCBhY2NvdW50IGFuZCB0aGUgYW1vdW50XG4gICAqIHRyYW5zZmVycmVkIG9uIHRoaXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHJldHVybnMgeyBhY2NvdW50SWQ6IHN0cmluZzsgdG9rZW5OYW1lc1tdfSBpcyBhbiBvYmplY3QgY29uc2lzdGluZyBvZiBhY2NvdW50SWQgZm9yIHRoZSB0b2tlbiBvd25lclxuICAgKiAgYW5kIGxpc3Qgb2YgdG9rZW5OYW1lcyB0aGF0IHdpbGwgYmUgZW5hYmxlZFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBY2NvdW50QXNzb2NpYXRlRGF0YSgpOiB7IGFjY291bnRJZDogc3RyaW5nOyB0b2tlbk5hbWVzOiBzdHJpbmdbXSB9IHtcbiAgICBjb25zdCB0b2tlbnM6IHByb3RvLklUb2tlbklEW10gPSB0aGlzLl90eEJvZHkudG9rZW5Bc3NvY2lhdGUhLnRva2VucyB8fCBbXTtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudElkOiBzdHJpbmdpZnlBY2NvdW50SWQodGhpcy5fdHhCb2R5LnRva2VuQXNzb2NpYXRlIS5hY2NvdW50ISksXG4gICAgICB0b2tlbk5hbWVzOiB0b2tlbnMubWFwKCh0b2tlbjogcHJvdG8uSVRva2VuSUQpID0+IGdldEhlZGVyYVRva2VuTmFtZUZyb21JZChzdHJpbmdpZnlUb2tlbklkKHRva2VuKSkhLm5hbWUpLFxuICAgIH07XG4gIH1cblxuICAvLyByZWdpb24gZ2V0dGVycyAmIHNldHRlcnNcbiAgZ2V0IHR4Qm9keSgpOiBwcm90by5UcmFuc2FjdGlvbkJvZHkge1xuICAgIHJldHVybiB0aGlzLl90eEJvZHk7XG4gIH1cblxuICBnZXQgaGVkZXJhVHgoKTogcHJvdG8uVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9oZWRlcmFUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gYm9keSBjb21wb25lbnRzXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvdG8uVHJhbnNhY3Rpb259IHR4IC0gQm9keSBUcmFuc2FjdGlvblxuICAgKi9cbiAgYm9keSh0eDogcHJvdG8uVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90eEJvZHkgPSBwcm90by5UcmFuc2FjdGlvbkJvZHkuZGVjb2RlKHR4LmJvZHlCeXRlcyk7XG4gICAgdGhpcy5faGVkZXJhVHggPSB0eDtcbiAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgLSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlIHByZXZpb3VzIHNpZ25hdHVyZXMgZnJvbSB0aGUgaW5uZXIgaGVkZXJhIHRyYW5zYWN0aW9uXG4gICAqIGFuZCBzYXZlIHRoZW0gaW50byB0aGUgYmFzZSB0cmFuc2FjdGlvbiBzaWduYXR1cmUgbGlzdC5cbiAgICovXG4gIGxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2hlZGVyYVR4LnNpZ01hcCAmJiB0aGlzLl9oZWRlcmFUeC5zaWdNYXAuc2lnUGFpcikge1xuICAgICAgY29uc3Qgc2lnUGFpcnMgPSB0aGlzLl9oZWRlcmFUeC5zaWdNYXAuc2lnUGFpcjtcbiAgICAgIHNpZ1BhaXJzLmZvckVhY2goKHNpZ1BhaXIpID0+IHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnUGFpci5lZDI1NTE5O1xuICAgICAgICBpZiAoc2lnbmF0dXJlKSB7XG4gICAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHRvSGV4KHNpZ25hdHVyZSkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGpzb25cbiAgICogaWYgdGhlcmUgYXJlIG91dHB1dHMuIEZvciB0cmFuc2FjdGlvbnMgd2l0aG91dCBvdXRwdXRzIChlLmcuIHdhbGxldCBpbml0aWFsaXphdGlvbnMpLFxuICAgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGRvIGFueXRoaW5nXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBjb25zdCB0eEpzb24gPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGluc3RydWN0aW9uID0gdHhKc29uLmluc3RydWN0aW9uc0RhdGE7XG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuXG4gICAgc3dpdGNoIChpbnN0cnVjdGlvbj8udHlwZSkge1xuICAgICAgY2FzZSBIZWRlcmFUcmFuc2FjdGlvblR5cGVzLlRyYW5zZmVyOlxuICAgICAgICBsZXQgdG90YWxBbW91bnQgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgICAgICBpbnN0cnVjdGlvbi5wYXJhbXMucmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgICB0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50LnBsdXMocmVjaXBpZW50LmFtb3VudCk7XG4gICAgICAgICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgdmFsdWU6IHJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiByZWNpcGllbnQudG9rZW5OYW1lIHx8IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiB0eEpzb24uZnJvbSxcbiAgICAgICAgICB2YWx1ZTogdG90YWxBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiBpbnN0cnVjdGlvbi5wYXJhbXMudG9rZW5OYW1lIHx8IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEhlZGVyYVRyYW5zYWN0aW9uVHlwZXMuVG9rZW5Bc3NvY2lhdGVUb0FjY291bnQ6XG4gICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWVzLmZvckVhY2goKHRva2VuTmFtZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRva2VuRW50cnk6IEVudHJ5ID0ge1xuICAgICAgICAgICAgYWRkcmVzczogaW5zdHJ1Y3Rpb24ucGFyYW1zLmFjY291bnRJZCxcbiAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICBjb2luOiB0b2tlbk5hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpbnB1dHMucHVzaCh0b2tlbkVudHJ5KTtcbiAgICAgICAgICBvdXRwdXRzLnB1c2godG9rZW5FbnRyeSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5faW5wdXRzID0gaW5wdXRzO1xuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyB0cmFuc2FjdGlvbiBib2R5IGNvbXBvbmVudHNcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5fSBieXRlcyAtIEVuY29kZWQgYm9keSB0cmFuc2FjdGlvblxuICAgKi9cbiAgYm9keUJ5dGVzKGJ5dGVzOiBVaW50OEFycmF5KTogdm9pZCB7XG4gICAgdGhpcy5ib2R5KHByb3RvLlRyYW5zYWN0aW9uLmRlY29kZShieXRlcykpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBoZWxwZXJzXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoaXMgaGVkZXJhIHRyYW5zYWN0aW9uIGlkIGNvbXBvbmVudHMgaW4gYSByZWFkYWJsZSBmb3JtYXRcbiAgICpcbiAgICogQHJldHVybnMge1tzdHJpbmcsIHN0cmluZ119IC0gVHJhbnNhY3Rpb24gaWQgcGFydHMgWzxhY2NvdW50IGlkPiwgPHN0YXJ0VGltZSBpbiBzZWNvbmRzPl1cbiAgICovXG4gIGdldFR4SWRQYXJ0cygpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl90eEJvZHkgJiZcbiAgICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklEICYmXG4gICAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC5hY2NvdW50SUQgJiZcbiAgICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELnRyYW5zYWN0aW9uVmFsaWRTdGFydFxuICAgICkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgc3RyaW5naWZ5QWNjb3VudElkKHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbklELmFjY291bnRJRCksXG4gICAgICAgIHN0cmluZ2lmeVR4VGltZSh0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRC50cmFuc2FjdGlvblZhbGlkU3RhcnQpLFxuICAgICAgXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHRyYW5zYWN0aW9uIGlkIGluZm9ybWF0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIHRyYW5zYWN0aW9uIGhhc2hcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdHJhbnNhY3Rpb24gaGFzaFxuICAgKi9cbiAgZ2V0VHhIYXNoKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl90eEJvZHkubm9kZUFjY291bnRJRCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHRyYW5zYWN0aW9uIG5vZGUgaWQnKTtcbiAgICB9XG4gICAgY29uc3QgX3NpZ25lZFR4ID0gbmV3IHByb3RvLlNpZ25lZFRyYW5zYWN0aW9uKCk7XG4gICAgX3NpZ25lZFR4LnNpZ01hcCA9IHRoaXMuX2hlZGVyYVR4LnNpZ01hcDtcbiAgICBfc2lnbmVkVHguYm9keUJ5dGVzID0gdGhpcy5faGVkZXJhVHguYm9keUJ5dGVzO1xuXG4gICAgY29uc3QgZW5jb2RlciA9IHByb3RvLlNpZ25lZFRyYW5zYWN0aW9uO1xuICAgIHJldHVybiB0aGlzLnNoYSh0aGlzLmVuY29kZShfc2lnbmVkVHgsIGVuY29kZXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNvZGUgYW4gb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiBlbmNvZGVyIGNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7cHJvdG99IG9iaiAtIFRoZSBvYmplY3QgdG8gYmUgZW5jb2RlZCwgbXVzdCBiZSBpbiBwcm90byBuYW1lc3BhY2VcbiAgICogQHBhcmFtIGVuY29kZXIgLSBPYmplY3QgZW5jb2RlclxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gLSBFbmNvZGVkIG9iamVjdCBieXRlIGFycmF5XG4gICAqL1xuICBwcml2YXRlIGVuY29kZTxDdG9yRm4gZXh0ZW5kcyB7IG5ldyAoKTogVCB9LCBUIGV4dGVuZHMgeyBjb25zdHJ1Y3RvcjogQ3RvckZuIH0+KFxuICAgIG9iajogVCxcbiAgICBlbmNvZGVyOiB7IGVuY29kZShhcmc6IFQpOiBXcml0ZXIgfVxuICApOiBVaW50OEFycmF5IHtcbiAgICByZXR1cm4gZW5jb2Rlci5lbmNvZGUob2JqKS5maW5pc2goKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc2hhLTM4NCBoYXNoXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gYnl0ZXMgLSBCeXRlcyB0byBiZSBoYXNoZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcmVzdWx0aW5nIGhhc2ggc3RyaW5nXG4gICAqL1xuICBzaGEoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIHJldHVybiB0b0hleChoYXNoKGJ5dGVzKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -44,7 +48,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
44
48
  // region Base Builder
45
49
  /** @inheritdoc */
46
50
  async buildImplementation() {
47
- this._txBody.nodeAccountID = utils_1.buildHederaAccountID(this._node.nodeId);
51
+ this._txBody.nodeAccountID = (0, utils_1.buildHederaAccountID)(this._node.nodeId);
48
52
  this._txBody.transactionFee = Long.fromString(this._fee.fee);
49
53
  this._txBody.transactionID = this.buildTxId();
50
54
  this._txBody.memo = this._memo;
@@ -102,7 +106,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
102
106
  buildTxId() {
103
107
  return new proto_1.proto.TransactionID({
104
108
  transactionValidStart: this.validStart,
105
- accountID: utils_1.buildHederaAccountID(this._source.address),
109
+ accountID: (0, utils_1.buildHederaAccountID)(this._source.address),
106
110
  });
107
111
  }
108
112
  // endregion
@@ -127,7 +131,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
127
131
  * @returns {TransactionBuilder} - This transaction builder
128
132
  */
129
133
  node(node) {
130
- if (!utils_1.isValidAddress(node.nodeId)) {
134
+ if (!(0, utils_1.isValidAddress)(node.nodeId)) {
131
135
  throw new sdk_core_1.InvalidParameterValueError('Invalid Hedera node address');
132
136
  }
133
137
  this._node = node;
@@ -192,7 +196,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
192
196
  * @returns {TransactionBuilder} - this
193
197
  */
194
198
  startTime(time) {
195
- if (!utils_1.isValidTimeString(time)) {
199
+ if (!(0, utils_1.isValidTimeString)(time)) {
196
200
  throw new sdk_core_1.InvalidParameterValueError('Invalid value for time parameter');
197
201
  }
198
202
  const timeParts = time.split('.').map((v) => new bignumber_js_1.default(v).toNumber());
@@ -203,7 +207,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
203
207
  // region Getters and Setters
204
208
  get validStart() {
205
209
  if (!this._startTime) {
206
- this.startTime(utils_1.getCurrentTime());
210
+ this.startTime((0, utils_1.getCurrentTime)());
207
211
  }
208
212
  return this._startTime;
209
213
  }
@@ -219,7 +223,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
219
223
  // region Validators
220
224
  /** @inheritdoc */
221
225
  validateAddress(address, addressFormat) {
222
- if (!utils_1.isValidAddress(address.address)) {
226
+ if (!(0, utils_1.isValidAddress)(address.address)) {
223
227
  throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
224
228
  }
225
229
  }
@@ -231,7 +235,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
231
235
  }
232
236
  /** @inheritdoc */
233
237
  validateRawTransaction(rawTransaction) {
234
- if (!utils_1.isValidRawTransactionFormat(rawTransaction)) {
238
+ if (!(0, utils_1.isValidRawTransactionFormat)(rawTransaction)) {
235
239
  throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
236
240
  }
237
241
  }
@@ -267,4 +271,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
267
271
  }
268
272
  }
269
273
  exports.TransactionBuilder = TransactionBuilder;
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdFQUFxQztBQUNyQywyQ0FBNkI7QUFDN0IsNENBQXlDO0FBQ3pDLG1EQVM4QjtBQUM5QiwrQ0FBNEM7QUFDNUMsbUNBTWlCO0FBQ2pCLHVDQUFvQztBQUdwQyxNQUFzQixrQkFBbUIsU0FBUSxpQ0FBc0I7SUFZckUsWUFBc0IsV0FBaUM7UUFDckQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTlgsVUFBSyxHQUFlLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLGNBQVMsR0FBbUIsSUFBSSxhQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBTTFGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxhQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHlCQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLDRCQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcs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IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIExvbmcgZnJvbSAnbG9uZyc7XG5pbXBvcnQgeyBwcm90byB9IGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VGZWUsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRIZWRlcmFBY2NvdW50SUQsXG4gIGdldEN1cnJlbnRUaW1lLFxuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0LFxuICBpc1ZhbGlkVGltZVN0cmluZyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEhlZGVyYU5vZGUsIFNpZ25hdHVyZURhdGEgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2ZlZTogQmFzZUZlZTtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NvdXJjZTogQmFzZUFkZHJlc3M7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBwcm90by5JVGltZXN0YW1wO1xuICBwcm90ZWN0ZWQgX21lbW86IHN0cmluZztcbiAgcHJvdGVjdGVkIF90eEJvZHk6IHByb3RvLlRyYW5zYWN0aW9uQm9keTtcbiAgcHJvdGVjdGVkIF9ub2RlOiBIZWRlcmFOb2RlID0geyBub2RlSWQ6ICcwLjAuNCcgfTtcbiAgcHJvdGVjdGVkIF9kdXJhdGlvbjogcHJvdG8uRHVyYXRpb24gPSBuZXcgcHJvdG8uRHVyYXRpb24oeyBzZWNvbmRzOiBMb25nLmZyb21OdW1iZXIoMTgwKSB9KTtcbiAgcHJvdGVjdGVkIF9tdWx0aVNpZ25lcktleVBhaXJzOiBLZXlQYWlyW107XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlczogU2lnbmF0dXJlRGF0YVtdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHhCb2R5ID0gbmV3IHByb3RvLlRyYW5zYWN0aW9uQm9keSgpO1xuICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbjtcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzID0gW107XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX3R4Qm9keS5ub2RlQWNjb3VudElEID0gYnVpbGRIZWRlcmFBY2NvdW50SUQodGhpcy5fbm9kZS5ub2RlSWQpO1xuICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSA9IExvbmcuZnJvbVN0cmluZyh0aGlzLl9mZWUuZmVlKTtcbiAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRCA9IHRoaXMuYnVpbGRUeElkKCk7XG4gICAgdGhpcy5fdHhCb2R5Lm1lbW8gPSB0aGlzLl9tZW1vO1xuICAgIGNvbnN0IGhUcmFuc2FjdGlvbiA9IHRoaXMudHJhbnNhY3Rpb24uaGVkZXJhVHggfHwgbmV3IHByb3RvLlRyYW5zYWN0aW9uKCk7XG4gICAgaFRyYW5zYWN0aW9uLmJvZHlCeXRlcyA9IHByb3RvLlRyYW5zYWN0aW9uQm9keS5lbmNvZGUodGhpcy5fdHhCb2R5KS5maW5pc2goKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmJvZHkoaFRyYW5zYWN0aW9uKTtcbiAgICBmb3IgKGNvbnN0IGtwIG9mIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrcCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgeyBzaWduYXR1cmUsIGtleVBhaXIgfSBvZiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUsIGtleVBhaXIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLmNoZWNrRHVwbGljYXRlZEtleXMoa2V5KTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcblxuICAgIC8vIFNpZ25pbmcgdGhlIHRyYW5zYWN0aW9uIGlzIGFuIG9wZXJhdGlvbiB0aGF0IHJlbGllcyBvbiBhbGwgdGhlIGRhdGEgYmVpbmcgc2V0LFxuICAgIC8vIHNvIHdlIHNldCB0aGUgc291cmNlIGhlcmUgYW5kIGxlYXZlIHRoZSBhY3R1YWwgc2lnbmluZyBmb3IgdGhlIGJ1aWxkIHN0ZXBcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLnB1c2goc2lnbmVyKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLmZlZSh7IGZlZTogdHhEYXRhLmZlZS50b1N0cmluZygpIH0pO1xuICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogdHhEYXRhLmZyb20gfSk7XG4gICAgdGhpcy5zdGFydFRpbWUodHhEYXRhLnN0YXJ0VGltZSk7XG4gICAgdGhpcy5ub2RlKHsgbm9kZUlkOiB0eERhdGEubm9kZSB9KTtcbiAgICB0aGlzLnZhbGlkRHVyYXRpb24obmV3IEJpZ051bWJlcih0eERhdGEudmFsaWREdXJhdGlvbikudG9OdW1iZXIoKSk7XG4gICAgaWYgKHR4RGF0YS5tZW1vKSB7XG4gICAgICB0aGlzLm1lbW8odHhEYXRhLm1lbW8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgSGVkZXJhIFRyYW5zYWN0aW9uSURcbiAgICpcbiAgICogQHJldHVybnMge3Byb3RvLlRyYW5zYWN0aW9uSUR9IC0gQ3JlYXRlZCBUcmFuc2FjdGlvbklEXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUeElkKCk6IHByb3RvLlRyYW5zYWN0aW9uSUQge1xuICAgIHJldHVybiBuZXcgcHJvdG8uVHJhbnNhY3Rpb25JRCh7XG4gICAgICB0cmFuc2FjdGlvblZhbGlkU3RhcnQ6IHRoaXMudmFsaWRTdGFydCxcbiAgICAgIGFjY291bnRJRDogYnVpbGRIZWRlcmFBY2NvdW50SUQodGhpcy5fc291cmNlLmFkZHJlc3MpLFxuICAgIH0pO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gQSBoZWRlcmEgbWVtbywgY2FuIGJlIGEgbWF4aW11bSBvZiAxMDAgYnl0ZXNcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gLSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG1lbW8obWVtbzogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKEJ1ZmZlci5mcm9tKG1lbW8pLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdNZW1vIG11c3Qgbm90IGJlIGxvbmdlciB0aGFuIDEwMCBieXRlcycpO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBub2RlLCBpdCBtYXkgdGFrZSB0aGUgZm9ybWF0IGAnPHNoYXJkPi48cmVhbG0+LjxhY2NvdW50PidgIG9yIGAnPGFjY291bnQ+J2BcbiAgICpcbiAgICogQHBhcmFtIHtIZWRlcmFOb2RlfSBub2RlIC0gQSBoZWRlcmEgbm9kZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBub2RlKG5vZGU6IEhlZGVyYU5vZGUpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKG5vZGUubm9kZUlkKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIEhlZGVyYSBub2RlIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB2YWxpZCBkdXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsaWREdXJhdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB2YWxpZCBkdXJhdGlvbiBpbiBzZWNvbmRzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB2YWxpZER1cmF0aW9uKHZhbGlkRHVyYXRpb246IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHZhbGlkRHVyYXRpb24pKTtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IG5ldyBwcm90by5EdXJhdGlvbih7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcih2YWxpZER1cmF0aW9uKSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZXNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlRmVlfSBmZWUgLSBUaGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBmZWUoZmVlOiBCYXNlRmVlKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmZlZSkpO1xuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHNvdXJjZVxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSBhZGRyZXNzIC0gVGhlIHNvdXJjZSBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzb3VyY2UoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB0aGlzLl9zb3VyY2UgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhbiBleHRlcm5hbCB0cmFuc2FjdGlvbiBzaWduYXR1cmVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBzdHJpbmdcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIC0gVGhlIHB1YmxpYyBrZXkga2V5cGFpciB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nLCBrZXlQYWlyOiBLZXlQYWlyKTogdGhpcyB7XG4gICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIGEgc2lnbmF0dXJlIGZvciB0aGlzIGtleSBwYWlyLCBqdXN0IHVwZGF0ZSBpdFxuICAgIGZvciAoY29uc3Qgb2xkU2lnbmF0dXJlIG9mIHRoaXMuX3NpZ25hdHVyZXMpIHtcbiAgICAgIGlmIChvbGRTaWduYXR1cmUua2V5UGFpci5nZXRLZXlzKCkucHViID09PSBrZXlQYWlyLmdldEtleXMoKS5wdWIpIHtcbiAgICAgICAgb2xkU2lnbmF0dXJlLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3RoZXJ3aXNlIGFkZCB0aGUgbmV3IHNpZ25hdHVyZVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IHNpZ25hdHVyZSwga2V5UGFpciB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpbWUgLSBTdHJpbmcgdmFsdWUgb2YgdGhlIHRpbWUgdG8gc2V0IHdpdGggZm9ybWF0IDxzZWNvbmRzPi48bmFub3M+XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gdGhpc1xuICAgKi9cbiAgc3RhcnRUaW1lKHRpbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFRpbWVTdHJpbmcodGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgdGltZSBwYXJhbWV0ZXInKTtcbiAgICB9XG4gICAgY29uc3QgdGltZVBhcnRzID0gdGltZS5zcGxpdCgnLicpLm1hcCgodikgPT4gbmV3IEJpZ051bWJlcih2KS50b051bWJlcigpKTtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSB7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcih0aW1lUGFydHNbMF0pLCBuYW5vczogdGltZVBhcnRzWzFdIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgcHJpdmF0ZSBnZXQgdmFsaWRTdGFydCgpOiBwcm90by5JVGltZXN0YW1wIHtcbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhpcy5zdGFydFRpbWUoZ2V0Q3VycmVudFRpbWUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICghbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0KHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzb3VyY2UnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRLZXlzKGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZm9yRWFjaCgoX3NvdXJjZUtleVBhaXIpID0+IHtcbiAgICAgIGlmIChfc291cmNlS2V5UGFpci5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1JlcGVhdGVkIHNpZ246ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnRUFBcUM7QUFDckMsMkNBQTZCO0FBQzdCLDRDQUF5QztBQUN6QyxtREFTOEI7QUFDOUIsK0NBQTRDO0FBQzVDLG1DQU1pQjtBQUNqQix1Q0FBb0M7QUFHcEMsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBWXJFLFlBQXNCLFdBQWlDO1FBQ3JELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQU5YLFVBQUssR0FBZSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN4QyxjQUFTLEdBQW1CLElBQUksYUFBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU0xRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxzQkFBc0I7SUFDdEIsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFBLDRCQUFvQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxj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N1FELGdEQTZRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCAqIGFzIExvbmcgZnJvbSAnbG9uZyc7XG5pbXBvcnQgeyBwcm90byB9IGZyb20gJ0BoYXNoZ3JhcGgvcHJvdG8nO1xuaW1wb3J0IHtcbiAgQmFzZUFkZHJlc3MsXG4gIEJhc2VGZWUsXG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHtcbiAgYnVpbGRIZWRlcmFBY2NvdW50SUQsXG4gIGdldEN1cnJlbnRUaW1lLFxuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0LFxuICBpc1ZhbGlkVGltZVN0cmluZyxcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IEhlZGVyYU5vZGUsIFNpZ25hdHVyZURhdGEgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2ZlZTogQmFzZUZlZTtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuICBwcm90ZWN0ZWQgX3NvdXJjZTogQmFzZUFkZHJlc3M7XG4gIHByb3RlY3RlZCBfc3RhcnRUaW1lOiBwcm90by5JVGltZXN0YW1wO1xuICBwcm90ZWN0ZWQgX21lbW86IHN0cmluZztcbiAgcHJvdGVjdGVkIF90eEJvZHk6IHByb3RvLlRyYW5zYWN0aW9uQm9keTtcbiAgcHJvdGVjdGVkIF9ub2RlOiBIZWRlcmFOb2RlID0geyBub2RlSWQ6ICcwLjAuNCcgfTtcbiAgcHJvdGVjdGVkIF9kdXJhdGlvbjogcHJvdG8uRHVyYXRpb24gPSBuZXcgcHJvdG8uRHVyYXRpb24oeyBzZWNvbmRzOiBMb25nLmZyb21OdW1iZXIoMTgwKSB9KTtcbiAgcHJvdGVjdGVkIF9tdWx0aVNpZ25lcktleVBhaXJzOiBLZXlQYWlyW107XG4gIHByb3RlY3RlZCBfc2lnbmF0dXJlczogU2lnbmF0dXJlRGF0YVtdO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHhCb2R5ID0gbmV3IHByb3RvLlRyYW5zYWN0aW9uQm9keSgpO1xuICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvblZhbGlkRHVyYXRpb24gPSB0aGlzLl9kdXJhdGlvbjtcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzID0gW107XG4gICAgdGhpcy5fc2lnbmF0dXJlcyA9IFtdO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLy8gcmVnaW9uIEJhc2UgQnVpbGRlclxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX3R4Qm9keS5ub2RlQWNjb3VudElEID0gYnVpbGRIZWRlcmFBY2NvdW50SUQodGhpcy5fbm9kZS5ub2RlSWQpO1xuICAgIHRoaXMuX3R4Qm9keS50cmFuc2FjdGlvbkZlZSA9IExvbmcuZnJvbVN0cmluZyh0aGlzLl9mZWUuZmVlKTtcbiAgICB0aGlzLl90eEJvZHkudHJhbnNhY3Rpb25JRCA9IHRoaXMuYnVpbGRUeElkKCk7XG4gICAgdGhpcy5fdHhCb2R5Lm1lbW8gPSB0aGlzLl9tZW1vO1xuICAgIGNvbnN0IGhUcmFuc2FjdGlvbiA9IHRoaXMudHJhbnNhY3Rpb24uaGVkZXJhVHggfHwgbmV3IHByb3RvLlRyYW5zYWN0aW9uKCk7XG4gICAgaFRyYW5zYWN0aW9uLmJvZHlCeXRlcyA9IHByb3RvLlRyYW5zYWN0aW9uQm9keS5lbmNvZGUodGhpcy5fdHhCb2R5KS5maW5pc2goKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmJvZHkoaFRyYW5zYWN0aW9uKTtcbiAgICBmb3IgKGNvbnN0IGtwIG9mIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrcCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgeyBzaWduYXR1cmUsIGtleVBhaXIgfSBvZiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUsIGtleVBhaXIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0aGlzLmluaXRCdWlsZGVyKHR4KTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICB0aGlzLmNoZWNrRHVwbGljYXRlZEtleXMoa2V5KTtcbiAgICBjb25zdCBzaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcblxuICAgIC8vIFNpZ25pbmcgdGhlIHRyYW5zYWN0aW9uIGlzIGFuIG9wZXJhdGlvbiB0aGF0IHJlbGllcyBvbiBhbGwgdGhlIGRhdGEgYmVpbmcgc2V0LFxuICAgIC8vIHNvIHdlIHNldCB0aGUgc291cmNlIGhlcmUgYW5kIGxlYXZlIHRoZSBhY3R1YWwgc2lnbmluZyBmb3IgdGhlIGJ1aWxkIHN0ZXBcbiAgICB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzLnB1c2goc2lnbmVyKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IC0gdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLmZlZSh7IGZlZTogdHhEYXRhLmZlZS50b1N0cmluZygpIH0pO1xuICAgIHRoaXMuc291cmNlKHsgYWRkcmVzczogdHhEYXRhLmZyb20gfSk7XG4gICAgdGhpcy5zdGFydFRpbWUodHhEYXRhLnN0YXJ0VGltZSk7XG4gICAgdGhpcy5ub2RlKHsgbm9kZUlkOiB0eERhdGEubm9kZSB9KTtcbiAgICB0aGlzLnZhbGlkRHVyYXRpb24obmV3IEJpZ051bWJlcih0eERhdGEudmFsaWREdXJhdGlvbikudG9OdW1iZXIoKSk7XG4gICAgaWYgKHR4RGF0YS5tZW1vKSB7XG4gICAgICB0aGlzLm1lbW8odHhEYXRhLm1lbW8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgSGVkZXJhIFRyYW5zYWN0aW9uSURcbiAgICpcbiAgICogQHJldHVybnMge3Byb3RvLlRyYW5zYWN0aW9uSUR9IC0gQ3JlYXRlZCBUcmFuc2FjdGlvbklEXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUeElkKCk6IHByb3RvLlRyYW5zYWN0aW9uSUQge1xuICAgIHJldHVybiBuZXcgcHJvdG8uVHJhbnNhY3Rpb25JRCh7XG4gICAgICB0cmFuc2FjdGlvblZhbGlkU3RhcnQ6IHRoaXMudmFsaWRTdGFydCxcbiAgICAgIGFjY291bnRJRDogYnVpbGRIZWRlcmFBY2NvdW50SUQodGhpcy5fc291cmNlLmFkZHJlc3MpLFxuICAgIH0pO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBtZW1vXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZW1vIC0gQSBoZWRlcmEgbWVtbywgY2FuIGJlIGEgbWF4aW11bSBvZiAxMDAgYnl0ZXNcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gLSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIG1lbW8obWVtbzogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKEJ1ZmZlci5mcm9tKG1lbW8pLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdNZW1vIG11c3Qgbm90IGJlIGxvbmdlciB0aGFuIDEwMCBieXRlcycpO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vID0gbWVtbztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgU2V0IHRoZSBub2RlLCBpdCBtYXkgdGFrZSB0aGUgZm9ybWF0IGAnPHNoYXJkPi48cmVhbG0+LjxhY2NvdW50PidgIG9yIGAnPGFjY291bnQ+J2BcbiAgICpcbiAgICogQHBhcmFtIHtIZWRlcmFOb2RlfSBub2RlIC0gQSBoZWRlcmEgbm9kZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBub2RlKG5vZGU6IEhlZGVyYU5vZGUpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKG5vZGUubm9kZUlkKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIEhlZGVyYSBub2RlIGFkZHJlc3MnKTtcbiAgICB9XG4gICAgdGhpcy5fbm9kZSA9IG5vZGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB2YWxpZCBkdXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsaWREdXJhdGlvbiAtIFRoZSB0cmFuc2FjdGlvbiB2YWxpZCBkdXJhdGlvbiBpbiBzZWNvbmRzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB2YWxpZER1cmF0aW9uKHZhbGlkRHVyYXRpb246IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHZhbGlkRHVyYXRpb24pKTtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IG5ldyBwcm90by5EdXJhdGlvbih7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcih2YWxpZER1cmF0aW9uKSB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZXNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlRmVlfSBmZWUgLSBUaGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBmZWUoZmVlOiBCYXNlRmVlKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmZlZSkpO1xuICAgIHRoaXMuX2ZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHNvdXJjZVxuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VBZGRyZXNzfSBhZGRyZXNzIC0gVGhlIHNvdXJjZSBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzb3VyY2UoYWRkcmVzczogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzKTtcbiAgICB0aGlzLl9zb3VyY2UgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhbiBleHRlcm5hbCB0cmFuc2FjdGlvbiBzaWduYXR1cmVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSAtIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBzdHJpbmdcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIC0gVGhlIHB1YmxpYyBrZXkga2V5cGFpciB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgc2lnbmF0dXJlXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gVHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nLCBrZXlQYWlyOiBLZXlQYWlyKTogdGhpcyB7XG4gICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIGEgc2lnbmF0dXJlIGZvciB0aGlzIGtleSBwYWlyLCBqdXN0IHVwZGF0ZSBpdFxuICAgIGZvciAoY29uc3Qgb2xkU2lnbmF0dXJlIG9mIHRoaXMuX3NpZ25hdHVyZXMpIHtcbiAgICAgIGlmIChvbGRTaWduYXR1cmUua2V5UGFpci5nZXRLZXlzKCkucHViID09PSBrZXlQYWlyLmdldEtleXMoKS5wdWIpIHtcbiAgICAgICAgb2xkU2lnbmF0dXJlLnNpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3RoZXJ3aXNlIGFkZCB0aGUgbmV3IHNpZ25hdHVyZVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IHNpZ25hdHVyZSwga2V5UGFpciB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHN0YXJ0IHRpbWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpbWUgLSBTdHJpbmcgdmFsdWUgb2YgdGhlIHRpbWUgdG8gc2V0IHdpdGggZm9ybWF0IDxzZWNvbmRzPi48bmFub3M+XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IC0gdGhpc1xuICAgKi9cbiAgc3RhcnRUaW1lKHRpbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFRpbWVTdHJpbmcodGltZSkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgdGltZSBwYXJhbWV0ZXInKTtcbiAgICB9XG4gICAgY29uc3QgdGltZVBhcnRzID0gdGltZS5zcGxpdCgnLicpLm1hcCgodikgPT4gbmV3IEJpZ051bWJlcih2KS50b051bWJlcigpKTtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSB7IHNlY29uZHM6IExvbmcuZnJvbU51bWJlcih0aW1lUGFydHNbMF0pLCBuYW5vczogdGltZVBhcnRzWzFdIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIEdldHRlcnMgYW5kIFNldHRlcnNcbiAgcHJpdmF0ZSBnZXQgdmFsaWRTdGFydCgpOiBwcm90by5JVGltZXN0YW1wIHtcbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZSkge1xuICAgICAgdGhpcy5zdGFydFRpbWUoZ2V0Q3VycmVudFRpbWUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gVmFsaWRhdG9yc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEJhc2VBZGRyZXNzLCBhZGRyZXNzRm9ybWF0Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGFkZHJlc3MgJyArIGFkZHJlc3MuYWRkcmVzcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIGlmICghbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0KHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzb3VyY2UnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIGdpdmVuIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGlzLl9tdWx0aVNpZ25lcktleVBhaXJzXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUtleX0ga2V5IC0gVGhlIGtleSB0byBjaGVja1xuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0R1cGxpY2F0ZWRLZXlzKGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMuZm9yRWFjaCgoX3NvdXJjZUtleVBhaXIpID0+IHtcbiAgICAgIGlmIChfc291cmNlS2V5UGFpci5nZXRLZXlzKCkucHJ2ID09PSBrZXkua2V5KSB7XG4gICAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1JlcGVhdGVkIHNpZ246ICcgKyBrZXkua2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -38,7 +38,7 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
38
38
  const tx = this.parseRawTransaction(raw);
39
39
  switch (tx.type) {
40
40
  case sdk_core_1.TransactionType.Send:
41
- return utils_1.isTokenTransfer(tx.txBody.cryptoTransfer)
41
+ return (0, utils_1.isTokenTransfer)(tx.txBody.cryptoTransfer)
42
42
  ? this.getTokenTransferBuilder(tx)
43
43
  : this.getTransferBuilder(tx);
44
44
  case sdk_core_1.TransactionType.WalletInitialization:
@@ -79,10 +79,10 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
79
79
  * @param {any} rawTransaction - Transaction in any format
80
80
  */
81
81
  validateRawTransaction(rawTransaction) {
82
- if (!utils_1.isValidRawTransactionFormat(rawTransaction)) {
82
+ if (!(0, utils_1.isValidRawTransactionFormat)(rawTransaction)) {
83
83
  throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
84
84
  }
85
85
  }
86
86
  }
87
87
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFLOEI7QUFDOUIsK0VBQTRFO0FBQzVFLCtEQUE0RDtBQUU1RCwrQ0FBNEM7QUFDNUMsbUNBQXVFO0FBQ3ZFLG1FQUFnRTtBQUNoRSxpRUFBOEQ7QUFFOUQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEIsQ0FBQyxFQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHlDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QixDQUFDLEVBQWdCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDJDQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QixDQUFDLEVBQWdCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDZDQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQXdCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ2YsS0FBSywwQkFBZSxDQUFDLElBQUk7Z0JBQ3ZCLE9BQU8sdUJBQWUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWUsQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsS0FBSywwQkFBZSxDQUFDLG9CQUFvQjtnQkFDdkMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsS0FBSywwQkFBZSxDQUFDLG9DQUFvQztnQkFDdkQsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0M7Z0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUU7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxtQkFBbUIsQ0FBQyxjQUFtQztRQUM3RCxNQUFNLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssc0JBQXNCLENBQUMsY0FBbUM7UUFDaEUsSUFBSSxDQUFDLG1DQUEyQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztDQUNGO0FBbkZELDhEQW1GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IENvaW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL2NvaW5UcmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGlzVG9rZW5UcmFuc2ZlciwgaXNWYWxpZFJhd1RyYW5zYWN0aW9uRm9ybWF0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUb2tlbkFzc29jaWF0ZUJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuQXNzb2NpYXRlQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdG9rZW5UcmFuc2ZlckJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBDb2luVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IENvaW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIGZ1bmRzIHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBidWlsZGVyIHRvIGNyZWF0ZSBhIHRva2VuIGFzc29jaWF0aW9uIHRyYW5zYWN0aW9uXG4gICAqL1xuICBnZXRUb2tlbkFzc29jaWF0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRva2VuQXNzb2NpYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUb2tlbkFzc29jaWF0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGZyb20ocmF3OiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBjb25zdCB0eCA9IHRoaXMucGFyc2VSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgcmV0dXJuIGlzVG9rZW5UcmFuc2Zlcih0eC50eEJvZHkuY3J5cHRvVHJhbnNmZXIhKVxuICAgICAgICAgID8gdGhpcy5nZXRUb2tlblRyYW5zZmVyQnVpbGRlcih0eClcbiAgICAgICAgICA6IHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHR4KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUb2tlbkFzc29jaWF0ZUJ1aWxkZXIodHgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uICcgKyB0eC50eEJvZHkuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHRyYW5zYWN0aW9uIGluc3RhbmNlIGZyb20gdGhlIGVuY29kZWQgdmFsdWVcbiAgICpcbiAgICogQHBhcmFtIHtVaW50OEFycmF5IHwgc3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIGVuY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSB0aGUgcGFyc2VkIHRyYW5zYWN0aW9uIGluc3RhbmNlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gcmF3VHJhbnNhY3Rpb24gLSBUcmFuc2FjdGlvbiBpbiBhbnkgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFVpbnQ4QXJyYXkgfCBzdHJpbmcpIHtcbiAgICBpZiAoIWlzVmFsaWRSYXdUcmFuc2FjdGlvbkZvcm1hdChyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFLOEI7QUFDOUIsK0VBQTRFO0FBQzVFLCtEQUE0RDtBQUU1RCwrQ0FBNEM7QUFDNUMsbUNBQXVFO0FBQ3ZFLG1FQUFnRTtBQUNoRSxpRUFBOEQ7QUFFOUQsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEIsQ0FBQyxFQUFnQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx5REFBMkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHlDQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QixDQUFDLEVBQWdCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDJDQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7T0FFRztJQUNILHdCQUF3QixDQUFDLEVBQWdCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLDZDQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQXdCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ2YsS0FBSywwQkFBZSxDQUFDLElBQUk7Z0JBQ3ZCLE9BQU8sSUFBQSx1QkFBZSxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBZSxDQUFDO29CQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxLQUFLLDBCQUFlLENBQUMsb0JBQW9CO2dCQUN2QyxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxLQUFLLDBCQUFlLENBQUMsb0NBQW9DO2dCQUN2RCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQztnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5RTtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxpQkFBaUIsQ0FBK0IsRUFBMkIsRUFBRSxPQUFVO1FBQzdGLElBQUksRUFBRSxFQUFFO1lBQ04sT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLG1CQUFtQixDQUFDLGNBQW1DO1FBQzdELE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxzQkFBc0IsQ0FBQyxjQUFtQztRQUNoRSxJQUFJLENBQUMsSUFBQSxtQ0FBMkIsRUFBQyxjQUFjLENBQUMsRUFBRTtZQUNoRCxNQUFNLElBQUksZ0NBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1RDtJQUNILENBQUM7Q0FDRjtBQW5GRCw4REFtRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3dhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBDb2luVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi9jb2luVHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBpc1Rva2VuVHJhbnNmZXIsIGlzVmFsaWRSYXdUcmFuc2FjdGlvbkZvcm1hdCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVG9rZW5Bc3NvY2lhdGVCdWlsZGVyIH0gZnJvbSAnLi90b2tlbkFzc29jaWF0ZUJ1aWxkZXInO1xuaW1wb3J0IHsgVG9rZW5UcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3Rva2VuVHJhbnNmZXJCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogQ29pblRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBDb2luVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgYnVpbGRlciB0byBjcmVhdGUgYSBmdW5kcyB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRva2VuVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRva2VuVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYnVpbGRlciB0byBjcmVhdGUgYSB0b2tlbiBhc3NvY2lhdGlvbiB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5Bc3NvY2lhdGVCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUb2tlbkFzc29jaWF0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVG9rZW5Bc3NvY2lhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBmcm9tKHJhdzogVWludDhBcnJheSB8IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgdHggPSB0aGlzLnBhcnNlUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICBzd2l0Y2ggKHR4LnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiBpc1Rva2VuVHJhbnNmZXIodHgudHhCb2R5LmNyeXB0b1RyYW5zZmVyISlcbiAgICAgICAgICA/IHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIodHgpXG4gICAgICAgICAgOiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFzc29jaWF0ZWRUb2tlbkFjY291bnRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VG9rZW5Bc3NvY2lhdGVCdWlsZGVyKHR4KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbiAnICsgdHgudHhCb2R5LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBidWlsZGVyIHdpdGggdGhlIGdpdmVuIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uQnVpbGRlcn0gYnVpbGRlciAtIHRoZSBidWlsZGVyIHRvIGJlIGluaXRpYWxpemVkXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVCdWlsZGVyPFQgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXI+KHR4OiBUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZCwgYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0eCkge1xuICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSB0cmFuc2FjdGlvbiBpbnN0YW5jZSBmcm9tIHRoZSBlbmNvZGVkIHZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB7VWludDhBcnJheSB8IHN0cmluZ30gcmF3VHJhbnNhY3Rpb24gLSBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gdGhlIHBhcnNlZCB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSByYXcgdHJhbnNhY3Rpb24gaGFzIGEgdmFsaWQgZm9ybWF0IGluIHRoZSBibG9ja2NoYWluIGNvbnRleHQsIHRocm93IG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHJhd1RyYW5zYWN0aW9uIC0gVHJhbnNhY3Rpb24gaW4gYW55IGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKSB7XG4gICAgaWYgKCFpc1ZhbGlkUmF3VHJhbnNhY3Rpb25Gb3JtYXQocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxufVxuIl19