UNPKG

@coolwallet/sol

Version:
163 lines (162 loc) 23.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.compileAssociateTokenAccount = compileAssociateTokenAccount; exports.compileDelegateAndCreateAccountWithSeed = compileDelegateAndCreateAccountWithSeed; exports.compileSplTokenTransaction = compileSplTokenTransaction; exports.compileStakingWithdraw = compileStakingWithdraw; exports.compileTransferTransaction = compileTransferTransaction; exports.compileUndelegate = compileUndelegate; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var params = _interopRequireWildcard(require("../config/params")); var instructionsTemplate = _interopRequireWildcard(require("./instructions")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function compileTransferTransaction(transaction) { var fromPubkey = transaction.fromPubkey, toPubkey = transaction.toPubkey, recentBlockhash = transaction.recentBlockhash, lamports = transaction.lamports; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var coinInstruction = instructionsTemplate.transferCoin({ fromPubkey: fromPubkey, toPubkey: toPubkey, lamports: lamports }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [coinInstruction]), recentBlockhash: recentBlockhash, feePayer: fromPubkey }; } function compileSplTokenTransaction(transaction) { var signer = transaction.signer, fromTokenAccount = transaction.fromTokenAccount, toTokenAccount = transaction.toTokenAccount, amount = transaction.amount, recentBlockhash = transaction.recentBlockhash, programId = transaction.programId, tokenInfo = transaction.tokenInfo; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var splTokenInstruction = instructionsTemplate.transferSplToken({ signer: signer, fromTokenAccount: fromTokenAccount, toTokenAccount: toTokenAccount, amount: amount, programId: programId, tokenInfo: tokenInfo }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [splTokenInstruction]), recentBlockhash: recentBlockhash, feePayer: signer }; } function compileAssociateTokenAccount(transaction) { var signer = transaction.signer, owner = transaction.owner, associateAccount = transaction.associateAccount, token = transaction.token, recentBlockhash = transaction.recentBlockhash, programId = transaction.programId; var createTokenInstruction = instructionsTemplate.createAssociateTokenAccount({ signer: signer, owner: owner, associateAccount: associateAccount, token: token, programId: programId }); return { instructions: [createTokenInstruction], recentBlockhash: recentBlockhash, feePayer: signer }; } function compileUndelegate(transaction) { var stakePubkey = transaction.stakePubkey, authorizedPubkey = transaction.authorizedPubkey, feePayer = transaction.feePayer, recentBlockhash = transaction.recentBlockhash; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var undelegateInstruction = instructionsTemplate.undelegate({ stakePubkey: stakePubkey, authorizedPubkey: authorizedPubkey }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [undelegateInstruction]), feePayer: feePayer, recentBlockhash: recentBlockhash }; } function compileDelegateAndCreateAccountWithSeed(transaction) { var fromPubkey = transaction.fromPubkey, newAccountPubkey = transaction.newAccountPubkey, basePubkey = transaction.basePubkey, seed = transaction.seed, lamports = transaction.lamports, recentBlockhash = transaction.recentBlockhash, votePubkey = transaction.votePubkey; var computeUnitInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var createAccountWithSeedInstruction = instructionsTemplate.createAccountWithSeed({ fromPubkey: fromPubkey, newAccountPubkey: newAccountPubkey, basePubkey: basePubkey, seed: seed, space: 200, lamports: lamports, programId: params.STAKE_PROGRAM_ID }); var initializeInstruction = instructionsTemplate.initialize({ stakePubkey: newAccountPubkey, staker: fromPubkey, withdrawer: fromPubkey }); var delegateInstruction = instructionsTemplate.delegate({ stakePubkey: newAccountPubkey, authorizedPubkey: fromPubkey, votePubkey: votePubkey }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeUnitInstructions), [createAccountWithSeedInstruction, initializeInstruction, delegateInstruction]), recentBlockhash: recentBlockhash, feePayer: fromPubkey }; } function compileStakingWithdraw(transaction) { var authorizedPubkey = transaction.authorizedPubkey, stakePubkey = transaction.stakePubkey, withdrawToPubKey = transaction.withdrawToPubKey, recentBlockhash = transaction.recentBlockhash, lamports = transaction.lamports; var computeBudgetInstructions = instructionsTemplate.addComputeBudget({ computeUnitPrice: transaction.computeUnitPrice, computeUnitLimit: transaction.computeUnitLimit }); var withdrawInstruction = instructionsTemplate.withdraw({ stakePubkey: stakePubkey, withdrawToPubKey: withdrawToPubKey, authorizedPubkey: authorizedPubkey, lamports: lamports }); return { instructions: [].concat((0, _toConsumableArray2["default"])(computeBudgetInstructions), [withdrawInstruction]), recentBlockhash: recentBlockhash, feePayer: authorizedPubkey }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJhbXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJpbnN0cnVjdGlvbnNUZW1wbGF0ZSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImNvbXBpbGVUcmFuc2ZlclRyYW5zYWN0aW9uIiwidHJhbnNhY3Rpb24iLCJmcm9tUHVia2V5IiwidG9QdWJrZXkiLCJyZWNlbnRCbG9ja2hhc2giLCJsYW1wb3J0cyIsImNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMiLCJhZGRDb21wdXRlQnVkZ2V0IiwiY29tcHV0ZVVuaXRQcmljZSIsImNvbXB1dGVVbml0TGltaXQiLCJjb2luSW5zdHJ1Y3Rpb24iLCJ0cmFuc2ZlckNvaW4iLCJpbnN0cnVjdGlvbnMiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiZmVlUGF5ZXIiLCJjb21waWxlU3BsVG9rZW5UcmFuc2FjdGlvbiIsInNpZ25lciIsImZyb21Ub2tlbkFjY291bnQiLCJ0b1Rva2VuQWNjb3VudCIsImFtb3VudCIsInByb2dyYW1JZCIsInRva2VuSW5mbyIsInNwbFRva2VuSW5zdHJ1Y3Rpb24iLCJ0cmFuc2ZlclNwbFRva2VuIiwiY29tcGlsZUFzc29jaWF0ZVRva2VuQWNjb3VudCIsIm93bmVyIiwiYXNzb2NpYXRlQWNjb3VudCIsInRva2VuIiwiY3JlYXRlVG9rZW5JbnN0cnVjdGlvbiIsImNyZWF0ZUFzc29jaWF0ZVRva2VuQWNjb3VudCIsImNvbXBpbGVVbmRlbGVnYXRlIiwic3Rha2VQdWJrZXkiLCJhdXRob3JpemVkUHVia2V5IiwidW5kZWxlZ2F0ZUluc3RydWN0aW9uIiwidW5kZWxlZ2F0ZSIsImNvbXBpbGVEZWxlZ2F0ZUFuZENyZWF0ZUFjY291bnRXaXRoU2VlZCIsIm5ld0FjY291bnRQdWJrZXkiLCJiYXNlUHVia2V5Iiwic2VlZCIsInZvdGVQdWJrZXkiLCJjb21wdXRlVW5pdEluc3RydWN0aW9ucyIsImNyZWF0ZUFjY291bnRXaXRoU2VlZEluc3RydWN0aW9uIiwiY3JlYXRlQWNjb3VudFdpdGhTZWVkIiwic3BhY2UiLCJTVEFLRV9QUk9HUkFNX0lEIiwiaW5pdGlhbGl6ZUluc3RydWN0aW9uIiwiaW5pdGlhbGl6ZSIsInN0YWtlciIsIndpdGhkcmF3ZXIiLCJkZWxlZ2F0ZUluc3RydWN0aW9uIiwiZGVsZWdhdGUiLCJjb21waWxlU3Rha2luZ1dpdGhkcmF3Iiwid2l0aGRyYXdUb1B1YktleSIsIndpdGhkcmF3SW5zdHJ1Y3Rpb24iLCJ3aXRoZHJhdyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yYXdUcmFuc2FjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9jb25maWcvdHlwZXMnO1xuaW1wb3J0ICogYXMgcGFyYW1zIGZyb20gJy4uL2NvbmZpZy9wYXJhbXMnO1xuaW1wb3J0ICogYXMgaW5zdHJ1Y3Rpb25zVGVtcGxhdGUgZnJvbSAnLi9pbnN0cnVjdGlvbnMnO1xuXG5mdW5jdGlvbiBjb21waWxlVHJhbnNmZXJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjoge1xuICBmcm9tUHVia2V5OiB0eXBlcy5BZGRyZXNzO1xuICB0b1B1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgcmVjZW50QmxvY2toYXNoOiBzdHJpbmc7XG4gIGxhbXBvcnRzOiBudW1iZXIgfCBzdHJpbmc7XG4gIGNvbXB1dGVVbml0UHJpY2U/OiBzdHJpbmc7XG4gIGNvbXB1dGVVbml0TGltaXQ/OiBzdHJpbmc7XG59KTogdHlwZXMuVHJhbnNhY3Rpb25BcmdzIHtcbiAgY29uc3QgeyBmcm9tUHVia2V5LCB0b1B1YmtleSwgcmVjZW50QmxvY2toYXNoLCBsYW1wb3J0cyB9ID0gdHJhbnNhY3Rpb247XG4gIGNvbnN0IGNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS5hZGRDb21wdXRlQnVkZ2V0KHtcbiAgICBjb21wdXRlVW5pdFByaWNlOiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdFByaWNlLFxuICAgIGNvbXB1dGVVbml0TGltaXQ6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0TGltaXQsXG4gIH0pO1xuICBjb25zdCBjb2luSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS50cmFuc2ZlckNvaW4oe1xuICAgIGZyb21QdWJrZXksXG4gICAgdG9QdWJrZXksXG4gICAgbGFtcG9ydHMsXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIGNvaW5JbnN0cnVjdGlvbl0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBmcm9tUHVia2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlU3BsVG9rZW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbjoge1xuICBzaWduZXI6IHR5cGVzLkFkZHJlc3M7XG4gIGZyb21Ub2tlbkFjY291bnQ6IHR5cGVzLkFkZHJlc3M7XG4gIHRvVG9rZW5BY2NvdW50OiB0eXBlcy5BZGRyZXNzO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgYW1vdW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIHByb2dyYW1JZDogdHlwZXMuVG9rZW5Qcm9ncmFtSWQ7XG4gIHRva2VuSW5mbzogdHlwZXMuVG9rZW5JbmZvO1xuICBjb21wdXRlVW5pdFByaWNlPzogc3RyaW5nO1xuICBjb21wdXRlVW5pdExpbWl0Pzogc3RyaW5nO1xufSk6IHR5cGVzLlRyYW5zYWN0aW9uQXJncyB7XG4gIGNvbnN0IHsgc2lnbmVyLCBmcm9tVG9rZW5BY2NvdW50LCB0b1Rva2VuQWNjb3VudCwgYW1vdW50LCByZWNlbnRCbG9ja2hhc2gsIHByb2dyYW1JZCwgdG9rZW5JbmZvIH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmFkZENvbXB1dGVCdWRnZXQoe1xuICAgIGNvbXB1dGVVbml0UHJpY2U6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0UHJpY2UsXG4gICAgY29tcHV0ZVVuaXRMaW1pdDogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRMaW1pdCxcbiAgfSk7XG4gIGNvbnN0IHNwbFRva2VuSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNUZW1wbGF0ZS50cmFuc2ZlclNwbFRva2VuKHtcbiAgICBzaWduZXIsXG4gICAgZnJvbVRva2VuQWNjb3VudCxcbiAgICB0b1Rva2VuQWNjb3VudCxcbiAgICBhbW91bnQsXG4gICAgcHJvZ3JhbUlkLFxuICAgIHRva2VuSW5mbyxcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgaW5zdHJ1Y3Rpb25zOiBbLi4uY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucywgc3BsVG9rZW5JbnN0cnVjdGlvbl0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBzaWduZXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVBc3NvY2lhdGVUb2tlbkFjY291bnQodHJhbnNhY3Rpb246IHtcbiAgc2lnbmVyOiB0eXBlcy5BZGRyZXNzO1xuICBvd25lcjogdHlwZXMuQWRkcmVzcztcbiAgYXNzb2NpYXRlQWNjb3VudDogdHlwZXMuQWRkcmVzcztcbiAgdG9rZW46IHR5cGVzLkFkZHJlc3M7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICBwcm9ncmFtSWQ6IHR5cGVzLlRva2VuUHJvZ3JhbUlkO1xufSk6IHR5cGVzLlRyYW5zYWN0aW9uQXJncyB7XG4gIGNvbnN0IHsgc2lnbmVyLCBvd25lciwgYXNzb2NpYXRlQWNjb3VudCwgdG9rZW4sIHJlY2VudEJsb2NraGFzaCwgcHJvZ3JhbUlkIH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY3JlYXRlVG9rZW5JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmNyZWF0ZUFzc29jaWF0ZVRva2VuQWNjb3VudCh7XG4gICAgc2lnbmVyLFxuICAgIG93bmVyLFxuICAgIGFzc29jaWF0ZUFjY291bnQsXG4gICAgdG9rZW4sXG4gICAgcHJvZ3JhbUlkLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBpbnN0cnVjdGlvbnM6IFtjcmVhdGVUb2tlbkluc3RydWN0aW9uXSxcbiAgICByZWNlbnRCbG9ja2hhc2gsXG4gICAgZmVlUGF5ZXI6IHNpZ25lcixcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29tcGlsZVVuZGVsZWdhdGUodHJhbnNhY3Rpb246IHtcbiAgZmVlUGF5ZXI6IHR5cGVzLkFkZHJlc3M7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICBzdGFrZVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgYXV0aG9yaXplZFB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IHN0YWtlUHVia2V5LCBhdXRob3JpemVkUHVia2V5LCBmZWVQYXllciwgcmVjZW50QmxvY2toYXNoIH0gPSB0cmFuc2FjdGlvbjtcbiAgY29uc3QgY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmFkZENvbXB1dGVCdWRnZXQoe1xuICAgIGNvbXB1dGVVbml0UHJpY2U6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0UHJpY2UsXG4gICAgY29tcHV0ZVVuaXRMaW1pdDogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRMaW1pdCxcbiAgfSk7XG4gIGNvbnN0IHVuZGVsZWdhdGVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLnVuZGVsZWdhdGUoe1xuICAgIHN0YWtlUHVia2V5LFxuICAgIGF1dGhvcml6ZWRQdWJrZXksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogWy4uLmNvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMsIHVuZGVsZWdhdGVJbnN0cnVjdGlvbl0sXG4gICAgZmVlUGF5ZXIsXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWQodHJhbnNhY3Rpb246IHtcbiAgZnJvbVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgbmV3QWNjb3VudFB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgYmFzZVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgdm90ZVB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgc2VlZDogc3RyaW5nO1xuICBsYW1wb3J0czogc3RyaW5nIHwgbnVtYmVyO1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgY29tcHV0ZVVuaXRQcmljZT86IHN0cmluZztcbiAgY29tcHV0ZVVuaXRMaW1pdD86IHN0cmluZztcbn0pOiB0eXBlcy5UcmFuc2FjdGlvbkFyZ3Mge1xuICBjb25zdCB7IGZyb21QdWJrZXksIG5ld0FjY291bnRQdWJrZXksIGJhc2VQdWJrZXksIHNlZWQsIGxhbXBvcnRzLCByZWNlbnRCbG9ja2hhc2gsIHZvdGVQdWJrZXkgfSA9IHRyYW5zYWN0aW9uO1xuICBjb25zdCBjb21wdXRlVW5pdEluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmFkZENvbXB1dGVCdWRnZXQoe1xuICAgIGNvbXB1dGVVbml0UHJpY2U6IHRyYW5zYWN0aW9uLmNvbXB1dGVVbml0UHJpY2UsXG4gICAgY29tcHV0ZVVuaXRMaW1pdDogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRMaW1pdCxcbiAgfSk7XG4gIGNvbnN0IGNyZWF0ZUFjY291bnRXaXRoU2VlZEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUuY3JlYXRlQWNjb3VudFdpdGhTZWVkKHtcbiAgICBmcm9tUHVia2V5LFxuICAgIG5ld0FjY291bnRQdWJrZXksXG4gICAgYmFzZVB1YmtleSxcbiAgICBzZWVkLFxuICAgIHNwYWNlOiAyMDAsXG4gICAgbGFtcG9ydHMsXG4gICAgcHJvZ3JhbUlkOiBwYXJhbXMuU1RBS0VfUFJPR1JBTV9JRCxcbiAgfSk7XG4gIGNvbnN0IGluaXRpYWxpemVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmluaXRpYWxpemUoe1xuICAgIHN0YWtlUHVia2V5OiBuZXdBY2NvdW50UHVia2V5LFxuICAgIHN0YWtlcjogZnJvbVB1YmtleSxcbiAgICB3aXRoZHJhd2VyOiBmcm9tUHVia2V5LFxuICB9KTtcbiAgY29uc3QgZGVsZWdhdGVJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLmRlbGVnYXRlKHtcbiAgICBzdGFrZVB1YmtleTogbmV3QWNjb3VudFB1YmtleSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBmcm9tUHVia2V5LFxuICAgIHZvdGVQdWJrZXksXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGluc3RydWN0aW9uczogW1xuICAgICAgLi4uY29tcHV0ZVVuaXRJbnN0cnVjdGlvbnMsXG4gICAgICBjcmVhdGVBY2NvdW50V2l0aFNlZWRJbnN0cnVjdGlvbixcbiAgICAgIGluaXRpYWxpemVJbnN0cnVjdGlvbixcbiAgICAgIGRlbGVnYXRlSW5zdHJ1Y3Rpb24sXG4gICAgXSxcbiAgICByZWNlbnRCbG9ja2hhc2gsXG4gICAgZmVlUGF5ZXI6IGZyb21QdWJrZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGFraW5nV2l0aGRyYXcodHJhbnNhY3Rpb246IHtcbiAgYXV0aG9yaXplZFB1YmtleTogdHlwZXMuQWRkcmVzcztcbiAgc3Rha2VQdWJrZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHdpdGhkcmF3VG9QdWJLZXk6IHR5cGVzLkFkZHJlc3M7XG4gIHJlY2VudEJsb2NraGFzaDogc3RyaW5nO1xuICBsYW1wb3J0czogbnVtYmVyIHwgc3RyaW5nO1xuICBjb21wdXRlVW5pdFByaWNlPzogc3RyaW5nO1xuICBjb21wdXRlVW5pdExpbWl0Pzogc3RyaW5nO1xufSk6IHR5cGVzLlRyYW5zYWN0aW9uQXJncyB7XG4gIGNvbnN0IHsgYXV0aG9yaXplZFB1YmtleSwgc3Rha2VQdWJrZXksIHdpdGhkcmF3VG9QdWJLZXksIHJlY2VudEJsb2NraGFzaCwgbGFtcG9ydHMgfSA9IHRyYW5zYWN0aW9uO1xuICBjb25zdCBjb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zID0gaW5zdHJ1Y3Rpb25zVGVtcGxhdGUuYWRkQ29tcHV0ZUJ1ZGdldCh7XG4gICAgY29tcHV0ZVVuaXRQcmljZTogdHJhbnNhY3Rpb24uY29tcHV0ZVVuaXRQcmljZSxcbiAgICBjb21wdXRlVW5pdExpbWl0OiB0cmFuc2FjdGlvbi5jb21wdXRlVW5pdExpbWl0LFxuICB9KTtcbiAgY29uc3Qgd2l0aGRyYXdJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc1RlbXBsYXRlLndpdGhkcmF3KHtcbiAgICBzdGFrZVB1YmtleSxcbiAgICB3aXRoZHJhd1RvUHViS2V5LFxuICAgIGF1dGhvcml6ZWRQdWJrZXksXG4gICAgbGFtcG9ydHMsXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgaW5zdHJ1Y3Rpb25zOiBbLi4uY29tcHV0ZUJ1ZGdldEluc3RydWN0aW9ucywgd2l0aGRyYXdJbnN0cnVjdGlvbl0sXG4gICAgcmVjZW50QmxvY2toYXNoLFxuICAgIGZlZVBheWVyOiBhdXRob3JpemVkUHVia2V5LFxuICB9O1xufVxuXG5leHBvcnQge1xuICBjb21waWxlVHJhbnNmZXJUcmFuc2FjdGlvbixcbiAgY29tcGlsZVNwbFRva2VuVHJhbnNhY3Rpb24sXG4gIGNvbXBpbGVBc3NvY2lhdGVUb2tlbkFjY291bnQsXG4gIGNvbXBpbGVVbmRlbGVnYXRlLFxuICBjb21waWxlRGVsZWdhdGVBbmRDcmVhdGVBY2NvdW50V2l0aFNlZWQsXG4g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