diff --git a/.gitignore b/.gitignore index 42317bddc..9f5ba6191 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ npm-debug.log* scTopics yarn-debug.log* yarn-error.log* +*.pem # packages packages/aztec.js/package-lock.json diff --git a/packages/extension/.env.example b/packages/extension/.env.example index ace955b85..1a3beee6d 100644 --- a/packages/extension/.env.example +++ b/packages/extension/.env.example @@ -1 +1,2 @@ INFURA_API_KEY=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz +GANACHE_TESTING_ACCOUNT_0=0xb0bdbc385e3369992a69c33fc3360f35217d12f753f38577eaba64aab69cf249 diff --git a/packages/extension/contracts/Migrations.sol b/packages/extension/contracts/Migrations.sol deleted file mode 100644 index de4413e3f..000000000 --- a/packages/extension/contracts/Migrations.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity ^0.5.0; - -contract Migrations { - address public owner; - uint public lastCompletedMigration; - - constructor() public { - owner = msg.sender; - } - - modifier restricted() { - if (msg.sender == owner) _; - } - - function setCompleted(uint completed) public restricted { - lastCompletedMigration = completed; - } - - function upgrade(address newAddress) public restricted { - Migrations upgraded = Migrations(newAddress); - upgraded.setCompleted(lastCompletedMigration); - } -} diff --git a/packages/extension/contracts/ZkAssetTemplate.sol b/packages/extension/contracts/ZkAssetTemplate.sol deleted file mode 100644 index bfca7a30b..000000000 --- a/packages/extension/contracts/ZkAssetTemplate.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity >=0.5.0 <0.6.0; - -import "@aztec/protocol/contracts/ACE/validators/joinSplit/JoinSplit.sol"; -import "@aztec/protocol/contracts/ACE/validators/joinSplitFluid/JoinSplitFluid.sol"; -import "@aztec/protocol/contracts/ACE/validators/swap/Swap.sol"; -import "@aztec/protocol/contracts/ACE/validators/privateRange/PrivateRange.sol"; -import "@aztec/protocol/contracts/ACE/validators/publicRange/PublicRange.sol"; -import "@aztec/protocol/contracts/ACE/validators/dividend/Dividend.sol"; -import "@aztec/protocol/contracts/ACE/noteRegistry/epochs/201907/base/FactoryBase201907.sol"; -import "@aztec/protocol/contracts/ACE/noteRegistry/epochs/201907/adjustable/FactoryAdjustable201907.sol"; -import "@aztec/protocol/contracts/ERC1724/ZkAssetMintable.sol"; -import "@aztec/protocol/contracts/ERC1724/ZkAssetBurnable.sol"; -import "@aztec/protocol/contracts/ERC1724/ZkAssetOwnable.sol"; -import "@aztec/protocol/contracts/ERC1724/ZkAsset.sol"; -import "@aztec/protocol/contracts/AccountRegistry/epochs/20200106/Behaviour20200106.sol"; -import "@aztec/protocol/contracts/AccountRegistry/AccountRegistryManager.sol"; - - -contract Dummy {} diff --git a/packages/extension/demo/1_apis-usage/asset.js b/packages/extension/demo/1_apis-usage/asset.js index d33b7b1ef..fff9056c4 100644 --- a/packages/extension/demo/1_apis-usage/asset.js +++ b/packages/extension/demo/1_apis-usage/asset.js @@ -1,267 +1,259 @@ 'use strict'; (() => { - const zkAssetAddress = document.body.getAttribute('asset'); - const { - address: accountAddress, - } = window.aztec.web3.getAccount(); - let asset; - let allowanceStatus; - let depositStatus; - let withdrawStatus; - let sendStatus; - let fetchStatus; - let createStatus; - - const makeStatusGenerator = (id) => { - let statusLogs = []; - const elem = document.getElementById(id); - const log = (status, keepInLog = false) => { - elem.style.color = 'inherit'; - elem.innerHTML = ` + const zkAssetAddress = document.body.getAttribute('asset'); + const { + address: accountAddress, + } = window.aztec.web3.getAccount(); + let asset; + let allowanceStatus; + let depositStatus; + let withdrawStatus; + let sendStatus; + let fetchStatus; + let createStatus; + + const makeStatusGenerator = (id) => { + let statusLogs = []; + const elem = document.getElementById(id); + const log = (status, keepInLog = false) => { + elem.style.color = 'inherit'; + elem.innerHTML = ` ${statusLogs.map(status => `${status}
`).join('')} ${status}
`; - if (keepInLog) { - statusLogs.push(status); - } + if (keepInLog) { + statusLogs.push(status); + } + }; + const error = (status, keepInLog) => { + log(status, keepInLog); + elem.style.color = 'red'; + }; + const clear = () => { + statusLogs = []; + elem.innerHTML = ''; + }; + return { + log, + error, + clear, + }; }; - const error = (status, keepInLog) => { - log(status, keepInLog); - elem.style.color = 'red'; - }; - const clear = () => { - statusLogs = []; - elem.innerHTML = ''; - }; - return { - log, - error, - clear, - }; - }; - - async function initBalance() { - const balance = await asset.balance(); - document.getElementById('asset-balance').innerHTML = `${balance}`; - } - - async function refreshAllowance() { - const allowance = await asset.allowanceOfLinkedToken( - accountAddress, - window.aztec.web3.getAddress('AccountRegistry'), - ); - document.getElementById('erc20-allowance').innerHTML = `${allowance}`; - } - - async function refreshERC20Balance() { - const balance = await asset.balanceOfLinkedToken(); - document.getElementById('erc20-balance').innerHTML = `${balance}`; - } - - async function refreshAssetBalances() { - refreshERC20Balance(); - refreshAllowance(); - } - - function updateAssetBalance(balance) { - document.getElementById('asset-balance').innerHTML = `${balance}`; - } - - async function initAsset() { - asset = await window.aztec.zkAsset(zkAssetAddress); - asset.subscribeToBalance(updateAssetBalance); - const apisElem = document.getElementById('asset-apis'); - if (!asset.isValid()) { - apisElem.innerHTML = 'This asset is not valid.'; - apisElem.style.color = 'red'; - } else { - allowanceStatus = makeStatusGenerator('allowance-status'); - depositStatus = makeStatusGenerator('deposit-status'); - withdrawStatus = makeStatusGenerator('withdraw-status'); - sendStatus = makeStatusGenerator('send-status'); - fetchStatus = makeStatusGenerator('fetch-status'); - createStatus = makeStatusGenerator('create-status'); - document.getElementById('linked-erc20-address').innerHTML = asset.linkedTokenAddress; - initBalance(); - refreshAssetBalances(); + + async function initBalance() { + const balance = await asset.balance(); + document.getElementById('asset-balance').innerHTML = `${balance}`; } - apisElem.style.display = 'block'; - } - async function approveAllowance() { - allowanceStatus.clear(); + async function refreshAllowance() { + const allowance = await asset.allowanceOfLinkedToken( + accountAddress, + window.aztec.web3.getAddress('AccountRegistry'), + ); + document.getElementById('erc20-allowance').innerHTML = `${allowance}`; + } - const allowanceInput = document.getElementById('erc20-allowance-value'); - const value = parseInt(allowanceInput.value); - if (!value) { - allowanceStatus.error('× Allowance value must be larger than 0'); - return; + async function refreshERC20Balance() { + const balance = await asset.balanceOfLinkedToken(); + document.getElementById('erc20-balance').innerHTML = `${balance}`; } - const registryAddress = window.aztec.web3.getAddress('AccountRegistry'); - const erc20Address = asset.linkedTokenAddress; - await window.aztec.web3 - .useContract('ERC20') - .at(erc20Address) - .method('approve') - .send( - registryAddress, - value, - ); - - await refreshAllowance(); - allowanceInput.value = ''; - } - - async function deposit() { - depositStatus.clear(); - - const numberOfOutputNotes = document.getElementById('deposit-output-number').value; - const toAddress = document.getElementById('deposit-to-address').value; - const amount = document.getElementById('deposit-value').value; - - try { - const resp = await asset.deposit( - [ - { - amount, - to: toAddress, - }, - ], - { - numberOfOutputNotes, - }, - ); - console.log('>> deposit response', resp); - refreshAssetBalances(); - } catch (error) { - console.error(error); - depositStatus.error(error.message); + async function refreshAssetBalances() { + refreshERC20Balance(); + refreshAllowance(); } - } - - async function withdraw() { - withdrawStatus.clear(); - - const amount = document.getElementById('withdraw-value').value; - const toAddress = document.getElementById('withdraw-to-address').value; - const numberOfInputNotes = document.getElementById('withdraw-input-number').value; - - try { - const resp = await asset.withdraw( - amount, - { - to: toAddress, - numberOfInputNotes, - }, - ); - console.log('>> withdraw response', resp); - refreshAssetBalances(); - } catch (error) { - console.error(error); - withdrawStatus.error(error.message); + + function updateAssetBalance(balance) { + document.getElementById('asset-balance').innerHTML = `${balance}`; } - } - - async function send() { - sendStatus.clear(); - - const numberOfInputNotes = document.getElementById('send-input-number').value; - const numberOfOutputNotes = document.getElementById('send-output-number').value; - const amount = document.getElementById('send-value').value; - const address = document.getElementById('send-address').value; - - try { - const resp = await asset.send( - [ - { - to: address, - amount, - }, - ], - { - numberOfInputNotes, - numberOfOutputNotes, - }, - ); - console.log('>> send response', resp); - refreshAssetBalances(); - } catch (error) { - console.error(error); - sendStatus.error(error.message); + + async function initAsset() { + asset = await window.aztec.zkAsset(zkAssetAddress); + asset.subscribeToBalance(updateAssetBalance); + const apisElem = document.getElementById('asset-apis'); + if (!asset.isValid()) { + apisElem.innerHTML = 'This asset is not valid.'; + apisElem.style.color = 'red'; + } else { + allowanceStatus = makeStatusGenerator('allowance-status'); + depositStatus = makeStatusGenerator('deposit-status'); + withdrawStatus = makeStatusGenerator('withdraw-status'); + sendStatus = makeStatusGenerator('send-status'); + fetchStatus = makeStatusGenerator('fetch-status'); + createStatus = makeStatusGenerator('create-status'); + document.getElementById('linked-erc20-address').innerHTML = asset.linkedTokenAddress; + initBalance(); + refreshAssetBalances(); + } + apisElem.style.display = 'block'; } - } - - async function createNoteFromBalance() { - createStatus.clear(); - - const numberOfInputNotes = document.getElementById('create-input-number').value; - const numberOfOutputNotes = document.getElementById('create-output-number').value; - const value = document.getElementById('create-amount').value; - const userAccess = []; - for (let i = 0; i < 10; i += 1) { - const elem = document.getElementById(`create-access-${i}`); - if (!elem) break; - if (elem.value) { - userAccess.push(elem.value); - } + + async function approveAllowance() { + allowanceStatus.clear(); + + const allowanceInput = document.getElementById('erc20-allowance-value'); + const value = parseInt(allowanceInput.value); + if (!value) { + allowanceStatus.error('× Allowance value must be larger than 0'); + return; + } + + const registryAddress = window.aztec.web3.getAddress('AccountRegistry'); + const erc20Address = asset.linkedTokenAddress; + await window.aztec.web3 + .useContract('ERC20') + .at(erc20Address) + .method('approve') + .send( + registryAddress, + value, + ); + + await refreshAllowance(); + allowanceInput.value = ''; + } + + async function deposit() { + depositStatus.clear(); + + const numberOfOutputNotes = document.getElementById('deposit-output-number').value; + const toAddress = document.getElementById('deposit-to-address').value; + const amount = document.getElementById('deposit-value').value; + + try { + const resp = await asset.deposit( + [{ + amount, + to: toAddress, + }, ], { + numberOfOutputNotes, + }, + ); + console.log('>> deposit response', resp); + refreshAssetBalances(); + } catch (error) { + console.error(error); + depositStatus.error(error.message); + } } - try { - const resp = await asset.createNoteFromBalance( - value, - { - userAccess, - numberOfInputNotes, - numberOfOutputNotes, - }, - ); - console.log('>> create note from balance response', resp); - refreshAssetBalances(); - } catch (error) { - console.error(error); - createStatus.error(error.message); + async function withdraw() { + withdrawStatus.clear(); + + const amount = document.getElementById('withdraw-value').value; + const toAddress = document.getElementById('withdraw-to-address').value; + const numberOfInputNotes = document.getElementById('withdraw-input-number').value; + + try { + const resp = await asset.withdraw( + amount, { + to: toAddress, + numberOfInputNotes, + }, + ); + console.log('>> withdraw response', resp); + refreshAssetBalances(); + } catch (error) { + console.error(error); + withdrawStatus.error(error.message); + } } - } - - async function fetchNotesFromBalance() { - fetchStatus.clear(); - - const equalTo = document.getElementById('fetch-eq-value').value; - const greaterThan = document.getElementById('fetch-gt-value').value; - const lessThan = document.getElementById('fetch-lt-value').value; - const numberOfNotes = document.getElementById('fetch-count-value').value; - - let notes; - try { - notes = await asset.fetchNotesFromBalance({ - equalTo, - lessThan, - greaterThan, - numberOfNotes, - }); - console.log('>> fetch notes from balance response', notes); - } catch (error) { - console.error(error); - fetchStatus.error(error.message); - return; + + async function send() { + sendStatus.clear(); + + const numberOfInputNotes = document.getElementById('send-input-number').value; + const numberOfOutputNotes = document.getElementById('send-output-number').value; + const amount = document.getElementById('send-value').value; + const address = document.getElementById('send-address').value; + + try { + const resp = await asset.send( + [{ + to: address, + amount, + }, ], { + numberOfInputNotes, + numberOfOutputNotes, + }, + ); + console.log('>> send response', resp); + refreshAssetBalances(); + } catch (error) { + console.error(error); + sendStatus.error(error.message); + } + } + + async function createNoteFromBalance() { + createStatus.clear(); + + const numberOfInputNotes = document.getElementById('create-input-number').value; + const numberOfOutputNotes = document.getElementById('create-output-number').value; + const value = document.getElementById('create-amount').value; + const userAccess = []; + for (let i = 0; i < 10; i += 1) { + const elem = document.getElementById(`create-access-${i}`); + if (!elem) break; + if (elem.value) { + userAccess.push(elem.value); + } + } + + try { + const resp = await asset.createNoteFromBalance( + value, { + userAccess, + numberOfInputNotes, + numberOfOutputNotes, + }, + ); + console.log('>> create note from balance response', resp); + refreshAssetBalances(); + } catch (error) { + console.error(error); + createStatus.error(error.message); + } } - if (!notes.length) { - fetchStatus.log('Cannot find any notes that meet the requirements.'); - } else { - fetchStatus.log(`Found ${notes.length} note${notes.length === 1 ? '' : 's'}:`, true); - notes.forEach(({ - noteHash, - value, - }) => { - fetchStatus.log(`${value} - ${noteHash}`, true); - }); + async function fetchNotesFromBalance() { + fetchStatus.clear(); + + const equalTo = document.getElementById('fetch-eq-value').value; + const greaterThan = document.getElementById('fetch-gt-value').value; + const lessThan = document.getElementById('fetch-lt-value').value; + const numberOfNotes = document.getElementById('fetch-count-value').value; + + let notes; + try { + notes = await asset.fetchNotesFromBalance({ + equalTo, + lessThan, + greaterThan, + numberOfNotes, + }); + console.log('>> fetch notes from balance response', notes); + } catch (error) { + console.error(error); + fetchStatus.error(error.message); + return; + } + + if (!notes.length) { + fetchStatus.log('Cannot find any notes that meet the requirements.'); + } else { + fetchStatus.log(`Found ${notes.length} note${notes.length === 1 ? '' : 's'}:`, true); + notes.forEach(({ + noteHash, + value, + }) => { + fetchStatus.log(`${value} - ${noteHash}`, true); + }); + } } - } - document.getElementById('app').innerHTML = ` + document.getElementById('app').innerHTML = `
Asset: ${zkAssetAddress}
@@ -447,23 +439,23 @@
`; - document.getElementById('approve-allowance-button') - .addEventListener('click', approveAllowance); + document.getElementById('approve-allowance-button') + .addEventListener('click', approveAllowance); - document.getElementById('deposit-button') - .addEventListener('click', deposit); + document.getElementById('deposit-button') + .addEventListener('click', deposit); - document.getElementById('withdraw-button') - .addEventListener('click', withdraw); + document.getElementById('withdraw-button') + .addEventListener('click', withdraw); - document.getElementById('send-button') - .addEventListener('click', send); + document.getElementById('send-button') + .addEventListener('click', send); - document.getElementById('create-note-from-balance-button') - .addEventListener('click', createNoteFromBalance); + document.getElementById('create-note-from-balance-button') + .addEventListener('click', createNoteFromBalance); - document.getElementById('fetch-notes-from-balance-button') - .addEventListener('click', fetchNotesFromBalance); + document.getElementById('fetch-notes-from-balance-button') + .addEventListener('click', fetchNotesFromBalance); - initAsset(); + initAsset(); })(); diff --git a/packages/extension/migrations/10_deploy_adjustableFactory.js b/packages/extension/migrations/10_deploy_adjustableFactory.js deleted file mode 100644 index 8135e61d0..000000000 --- a/packages/extension/migrations/10_deploy_adjustableFactory.js +++ /dev/null @@ -1,22 +0,0 @@ -/* global artifacts */ -const { - constants: { ERC20_SCALING_FACTOR }, -} = require('@aztec/dev-utils'); -const { isUndefined } = require('lodash'); - -const ACE = artifacts.require('./ACE.sol'); -const AdjustableFactory = artifacts.require('./noteRegistry/epochs/201907/adjustable/FactoryAdjustable201907'); - -module.exports = (deployer) => { - if (isUndefined(ACE) || isUndefined(ACE.address)) { - console.log('Please deploy the ACE contract first'); - process.exit(1); - } - - /* eslint-disable no-new */ - new Promise(() => deployer.deploy(AdjustableFactory, ACE.address).then(async ({ address }) => { - const ace = await ACE.at(ACE.address); - - await ace.setFactory(1 * 256 ** 2 + 1 * 256 ** 1 + 2 * 256 ** 0, address); - })); -}; diff --git a/packages/extension/migrations/11_deploy_mixedFactory.js b/packages/extension/migrations/11_deploy_mixedFactory.js deleted file mode 100644 index 7ffff046f..000000000 --- a/packages/extension/migrations/11_deploy_mixedFactory.js +++ /dev/null @@ -1,24 +0,0 @@ -/* global artifacts */ -const { - constants: { ERC20_SCALING_FACTOR }, -} = require('@aztec/dev-utils'); -const { isUndefined } = require('lodash'); - -const ACE = artifacts.require('./ACE.sol'); -const AdjustableFactory = artifacts.require('./noteRegistry/epochs/201907/adjustable/FactoryAdjustable201907'); - -module.exports = (deployer) => { - if (isUndefined(ACE) || isUndefined(ACE.address)) { - console.log('Please deploy the ACE contract first'); - process.exit(1); - } - - /* eslint-disable no-new */ - new Promise(() => { - return deployer.deploy(AdjustableFactory, ACE.address).then(async ({ address }) => { - const ace = await ACE.at(ACE.address); - - await ace.setFactory(1 * 256 ** 2 + 1 * 256 ** 1 + 3 * 256 ** 0, address); - }); - }); -}; diff --git a/packages/extension/migrations/12_deploy_zk_asset.js b/packages/extension/migrations/12_deploy_zk_asset.js deleted file mode 100644 index 62e6b6a08..000000000 --- a/packages/extension/migrations/12_deploy_zk_asset.js +++ /dev/null @@ -1,27 +0,0 @@ -/* global artifacts */ -const { - constants: { addresses, ERC20_SCALING_FACTOR }, -} = require('@aztec/dev-utils'); -const { isUndefined } = require('lodash'); - -const ACE = artifacts.require('./ACE.sol'); -const ERC20Mintable = artifacts.require('./ERC20Mintable.sol'); -const ZkAsset = artifacts.require('./ZkAsset.sol'); - -module.exports = (deployer, network) => { - if (isUndefined(ACE) || isUndefined(ACE.address)) { - console.log('Please deploy the ACE contract first'); - process.exit(1); - } - - /* eslint-disable no-new */ - new Promise(() => { - if (network === 'mainnet') { - return Promise.resolve({ address: addresses.DAI_ADDRESS }); - } - return deployer.deploy(ERC20Mintable).then(({ address: erc20Address }) => { - const aceAddress = ACE.address; - return deployer.deploy(ZkAsset, aceAddress, erc20Address, ERC20_SCALING_FACTOR); - }); - }); -}; diff --git a/packages/extension/migrations/14_deploy_accountRegistryBehaviour.js b/packages/extension/migrations/14_deploy_accountRegistryBehaviour.js deleted file mode 100644 index 1fb16f4a9..000000000 --- a/packages/extension/migrations/14_deploy_accountRegistryBehaviour.js +++ /dev/null @@ -1,22 +0,0 @@ -/* global artifacts */ -const dotenv = require('dotenv'); -const { fundRecipient } = require('@openzeppelin/gsn-helpers'); -const { toWei } = require('web3-utils'); - -dotenv.config(); -const AccountRegistryBehaviour = artifacts.require('./AccountRegistry/epochs/20200106/Behaviour20200106'); -const AccountRegistryManager = artifacts.require('./AccountRegistry/AccountRegistryManager'); -const ACE = artifacts.require('./ACE.sol'); - -module.exports = (deployer, network) => { - deployer.deploy(AccountRegistryBehaviour).then(async (contract) => { - if (network === 'development') { - const trustedGSNSignerAddress = process.env.LOCAL_TRUSTED_GSN_SIGNER_ADDRESS; - await contract.initialize(ACE.address, trustedGSNSignerAddress); - } else { - const trustedGSNSignerAddress = process.env.TRUSTED_GSN_SIGNER_ADDRESS; - await contract.initialize(ACE.address, trustedGSNSignerAddress); - } - }); -}; - diff --git a/packages/extension/migrations/15_deploy_accountRegistryManager.js b/packages/extension/migrations/15_deploy_accountRegistryManager.js deleted file mode 100644 index 13ce512fe..000000000 --- a/packages/extension/migrations/15_deploy_accountRegistryManager.js +++ /dev/null @@ -1,31 +0,0 @@ -/* global artifacts */ -const dotenv = require('dotenv'); - -dotenv.config(); -const AccountRegistryManager = artifacts.require('./AccountRegistry/AccountRegistryManager.sol'); -const AccountRegistryBehaviour = artifacts.require('./AccountRegistry/epochs/20200106/Behaviour20200106'); -const { fundRecipient } = require('@openzeppelin/gsn-helpers'); -const { toWei } = require('web3-utils'); -const Web3 = require('web3'); - -const ACE = artifacts.require('./ACE.sol'); - -module.exports = async (deployer, network) => { - await deployer.deploy( - AccountRegistryManager, - AccountRegistryBehaviour.address, - ACE.address, - network === 'development' ? process.env.LOCAL_TRUSTED_GSN_SIGNER_ADDRESS : process.env.TRUSTED_GSN_SIGNER_ADDRESS, - ); - - const contract = await AccountRegistryManager.deployed(); - const proxyAddress = await contract.proxyAddress.call(); - - const WEB3_PROVIDER_URL = 'http://127.0.0.1:8545'; - const web3 = new Web3(WEB3_PROVIDER_URL); - - await fundRecipient(web3, { - recipient: proxyAddress, - amount: toWei('1'), - }); -}; diff --git a/packages/extension/migrations/1_initial_migration.js b/packages/extension/migrations/1_initial_migration.js deleted file mode 100644 index a03569428..000000000 --- a/packages/extension/migrations/1_initial_migration.js +++ /dev/null @@ -1,6 +0,0 @@ -/* global artifacts */ -const Migrations = artifacts.require('./Migrations.sol'); - -module.exports = (deployer) => { - deployer.deploy(Migrations); -}; diff --git a/packages/extension/migrations/2_deploy_ace.js b/packages/extension/migrations/2_deploy_ace.js deleted file mode 100644 index 63caf9439..000000000 --- a/packages/extension/migrations/2_deploy_ace.js +++ /dev/null @@ -1,10 +0,0 @@ -/* global artifacts */ -const bn128 = require('@aztec/bn128'); - -const ACE = artifacts.require('./ACE.sol'); - -module.exports = (deployer) => { - return deployer.deploy(ACE).then(async (ace) => { - await ace.setCommonReferenceString(bn128.CRS); - }); -}; diff --git a/packages/extension/migrations/3_deploy_join_split.js b/packages/extension/migrations/3_deploy_join_split.js deleted file mode 100644 index 1bfe87b8f..000000000 --- a/packages/extension/migrations/3_deploy_join_split.js +++ /dev/null @@ -1,15 +0,0 @@ -/* global artifacts */ -const { proofs } = require('@aztec/dev-utils'); - -const ACE = artifacts.require('./ACE.sol'); -const JoinSplit = artifacts.require('./JoinSplit.sol'); -const JoinSplitInterface = artifacts.require('./JoinSplitInterface.sol'); - -JoinSplit.abi = JoinSplitInterface.abi; - -module.exports = (deployer) => { - return deployer.deploy(JoinSplit).then(async ({ address: joinSplitAddress }) => { - const ace = await ACE.at(ACE.address); - await ace.setProof(proofs.JOIN_SPLIT_PROOF, joinSplitAddress); - }); -}; diff --git a/packages/extension/migrations/9_deploy_baseFactory.js b/packages/extension/migrations/9_deploy_baseFactory.js deleted file mode 100644 index deb4de584..000000000 --- a/packages/extension/migrations/9_deploy_baseFactory.js +++ /dev/null @@ -1,24 +0,0 @@ -/* global artifacts */ -const { - constants: { ERC20_SCALING_FACTOR }, -} = require('@aztec/dev-utils'); -const { isUndefined } = require('lodash'); - -const ACE = artifacts.require('./ACE.sol'); -const BaseFactory = artifacts.require('./noteRegistry/epochs/201907/base/FactoryBase201907'); - -module.exports = (deployer) => { - if (isUndefined(ACE) || isUndefined(ACE.address)) { - console.log('Please deploy the ACE contract first'); - process.exit(1); - } - - /* eslint-disable no-new */ - new Promise(() => { - return deployer.deploy(BaseFactory, ACE.address).then(async ({ address }) => { - const ace = await ACE.at(ACE.address); - - await ace.setFactory(1 * 256 ** 2 + 1 * 256 ** 1 + 1 * 256 ** 0, address); - }); - }); -}; diff --git a/packages/extension/package.json b/packages/extension/package.json index f0bde079b..0cab80499 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -66,7 +66,7 @@ "normalize.css": "^8.0.1", "prop-types": "^15.7.2", "psl": "^1.2.0", - "puppeteer": "^1.20.0", + "puppeteer": "^2.1.1", "react": "^16.8.6", "react-dev-utils": "^9.0.3", "react-dom": "^16.8.6", @@ -91,7 +91,7 @@ }, "scripts": { "copy": "babel-node scripts/run copy", - "deploy:contracts": "babel-node scripts/run deployContracts", + "deploy:contracts": "babel-node scripts/run deploy", "has:changed": "bash ../monorepo-scripts/ci/hasChanged.sh extension", "generate:styles": "guacamole generateStyles", "generate:testData": "babel-node ./tests/generateTestData", @@ -102,7 +102,7 @@ "build:prod": "webpack --config webpack.prod.js", "start:ganache": "babel-node scripts/run start", "start:ui": "babel-node ./src/ui/mock/devServer", - "test:integration": "rm -rf ./test/harness/screenshots && mkdir ./test/harness/screenshots && NODE_ENV=integration truffle test ./test/*", + "test:integration": "rm -rf ./test/harness/screenshots && mkdir ./test/harness/screenshots && babel-node scripts/run integrationTests", "test:interactive": "cd ./test/harness/ && node --experimental-repl-await", "watch": "webpack --watch --config webpack.dev.js" }, diff --git a/packages/extension/scripts/instances/ganacheInstance.js b/packages/extension/scripts/instances/ganacheInstance.js deleted file mode 100644 index 8a8db10b3..000000000 --- a/packages/extension/scripts/instances/ganacheInstance.js +++ /dev/null @@ -1,165 +0,0 @@ -import Web3 from 'web3'; -import killPort from 'kill-port'; -import '../../env'; -import ganacheConfig from '../../config/ganache'; -import instance from '../utils/instance'; -import getNetwork from '../utils/getNetwork'; -import { - warnLog, - log, -} from '../utils/log'; -import { - argv, -} from '../utils/cmd'; - -let web3; - -const network = getNetwork(); - -const defaultPort = 8545; -const defaultNumberOfAccounts = 10; - -export const getPort = (fallbackPort = defaultPort) => { - let port = argv('port'); - if (!port) { - ({ - port, - } = (ganacheConfig.networks || {})[network] || {}); - } - - return port || fallbackPort; -}; - -const getNetworkId = () => { - let networkId = argv('networkId'); - if (!networkId) { - ({ - network_id: networkId, - } = (ganacheConfig.networks || {})[network] || {}); - } - - return networkId; -}; - -export const getHost = () => { - const { - host = 'localhost', - } = (ganacheConfig.networks || {})[network] || {}; - - return `http://${host}`; -}; - -const generateAccounts = () => { - const accounts = []; - const { - numberOfAccounts = defaultNumberOfAccounts, - defaultBalanceEther = 0, - } = (ganacheConfig.networks || {})[network] || {}; - - for (let i = 0; i < numberOfAccounts; i += 1) { - let address; - let privateKey = process.env[`GANACHE_TESTING_ACCOUNT_${i}`]; - if (privateKey) { - ({ address } = web3.eth.accounts.privateKeyToAccount(privateKey)); - } else { - ({ - address, - privateKey, - } = web3.eth.accounts.create()); - } - const balance = web3.utils.toWei( - `${process.env[`GANACHE_TESTING_ACCOUNT_${i}_BALANCE`] || defaultBalanceEther}`, - 'ether', - ); - - accounts.push({ - address, - privateKey, - balance, - }); - } - return accounts; -}; - -export default function ganacheInstance({ - onStart, - onReceiveOutput, - onReceiveErrorOutput, - onError, - onClose, - verbose = false, -} = {}) { - let port = getPort(0); - if (!port) { - warnLog(`Port is not defined for network '${network}'. Using default port number ${defaultPort}`); - port = defaultPort; - } - - const host = getHost(); - const provider = new Web3.providers.HttpProvider(`${host}:${port}`); - web3 = new Web3(provider); - - const params = []; - const accounts = generateAccounts(); - accounts.forEach(({ - privateKey, - balance, - }) => { - params.push(`--account=${privateKey},${balance}`); - }); - const networkId = getNetworkId(); - if (networkId.match(/^[1-9]+$/)) { - params.push('-i'); - params.push(`${networkId}`); - } - - let lastMethod; - const handleReceiveOutput = (output) => { - if (!verbose && output.match(/^(\s){0,}[a-z]+_(.|\s)+$/)) { - lastMethod = output; - } else { - if (onReceiveOutput) { - if (lastMethod) { - onReceiveOutput(lastMethod); - } - onReceiveOutput(output); - } else { - if (lastMethod) { - process.stdout.write(lastMethod); - } - process.stdout.write(output); - } - lastMethod = ''; - } - }; - - const handleClear = async () => { - await killPort(port); - log(`Clear process running on port ${port}`); - }; - - return instance( - './node_modules/.bin/ganache-cli', - [ - '-p', - port, - ...params, - ], - { - shouldStart: output => output.includes('Listening on') - && `Ganache is listening on ${host}:${port}\n`, - onStart: () => { - if (onStart) { - onStart(port); - } - return port; - }, - handleClear, - onReceiveOutput: handleReceiveOutput, - onReceiveErrorOutput, - onError, - onClose, - windowsVerbatimArguments: true, - }, - ); -} diff --git a/packages/extension/scripts/instances/gsnRelayerInstance.js b/packages/extension/scripts/instances/gsnRelayerInstance.js deleted file mode 100644 index 55bd51e55..000000000 --- a/packages/extension/scripts/instances/gsnRelayerInstance.js +++ /dev/null @@ -1,72 +0,0 @@ -import path from 'path'; -import Web3 from 'web3'; -import instance from '../utils/instance'; -import '../../env'; -import { - getHost, - getPort, -} from './ganacheInstance'; -import { - errorLog, -} from '../utils/log'; -import { - defaultFromAccount, -} from '../utils/GNSHelpers'; -import { - DEFAULT_GSN_RELAYER_PORT, -} from '../config/constants'; - - -const killedSig = '137'; - -export default async function gsnRelayerInstance({ - config = {}, - onError, - onClose, -} = {}) { - const port = getPort(0); - const host = getHost(); - const providerUrl = `${host}:${port}`; - const provider = new Web3.providers.HttpProvider(providerUrl); - const web3 = new Web3(provider); - const from = await defaultFromAccount(web3); - const { - relayerPort = DEFAULT_GSN_RELAYER_PORT, - workdir = path.resolve(__dirname, '../../build/gsn'), - } = config; - - const relayUrl = `${host}:${relayerPort}`; - - const exitOnError = () => { - if (onError) { - onError(); - } - if (onClose) { - onClose(); - } - }; - - const handleReceiveOutput = (output) => { - if (output.includes('exited with code')) { - const [, code] = output.match(/exited with code ([0-9]+)/) || []; - if (code !== killedSig) { - errorLog(`✖ GSN Relayer exited with code ${code}`); - } - exitOnError(); - } else { - process.stdout.write(output); - } - }; - - const runRelayerCMD = `npx oz-gsn run-relayer --detach --quiet --relayUrl "${relayUrl}" --ethereumNodeURL "${providerUrl}" -f "${from}" --workdir "${workdir}"`; - return instance( - runRelayerCMD, - { - shouldStart: output => output.includes('Relay is funded and ready!'), - onReceiveOutput: handleReceiveOutput, - onError, - onClose, - handleStderrAsNormalOutput: true, - }, - ); -} diff --git a/packages/extension/scripts/instances/migrateContractsInstance.js b/packages/extension/scripts/instances/migrateContractsInstance.js deleted file mode 100644 index f8d4b82d2..000000000 --- a/packages/extension/scripts/instances/migrateContractsInstance.js +++ /dev/null @@ -1,42 +0,0 @@ -import instance from '../utils/instance'; -import { - errorLog, -} from '../utils/log'; -import { - locatePackage, - locateFile, -} from '../utils/path'; - -const truffleExec = '.bin/truffle'; - -export default function migrateContractsInstance({ - packageName, - network = 'development', - onError, - onClose, -}) { - const targetPath = locatePackage(packageName); - if (!targetPath) { - errorLog(`Unable to run truffle migrate. Package '${packageName}' not found.`); - if (onError) { - onError(); - } - } - - const trufflePath = locateFile(truffleExec); - - if (!trufflePath) { - errorLog('Truffle not found', `path: ${trufflePath}`); - if (onError) { - onError(); - } - } - - return instance( - `cd ${targetPath} && ${trufflePath} compile --all && ${trufflePath} migrate --reset --network ${network}`, - { - onError, - onClose, - }, - ); -} diff --git a/packages/extension/scripts/run.js b/packages/extension/scripts/run.js index e8ef3afa3..245c1c209 100644 --- a/packages/extension/scripts/run.js +++ b/packages/extension/scripts/run.js @@ -4,21 +4,16 @@ import { warnLog, errorLog, } from './utils/log'; -import taskPromise from './utils/taskPromise'; function run(fn, options) { const task = (typeof fn.default === 'undefined') ? fn : fn.default; successLog(`Start running '${task.name}${options.length ? ` ${options.join(' ')}` : ''}'...`); const startTime = Date.now(); - return taskPromise(task) + return task.run() .then(() => { const diff = Date.now() - startTime; successLog(`\nFinished '${task.name}' in ${diff} ms.`); - - setTimeout(() => { - process.exit(0); - }, 100); }) .catch((error) => { if (error) { @@ -26,10 +21,6 @@ function run(fn, options) { } warnLog(`\nFailed to run '${task.name}${options.length ? ` ${options.join(' ')}` : ''}'.`); - - setTimeout(() => { - process.exit(0); - }, 100); }); } @@ -37,6 +28,6 @@ if (process.argv.length > 2) { delete require.cache[__filename]; // eslint-disable-line no-underscore-dangle const taskName = process.argv[2]; - const module = require(`./tasks/${taskName}`).default; // eslint-disable-line + const module = require(`./scenarios/${taskName}`).default; // eslint-disable-line run(module, process.argv.slice(3)).catch(err => errorLog(err.stack)); } diff --git a/packages/extension/scripts/scenarios/copy.js b/packages/extension/scripts/scenarios/copy.js new file mode 100644 index 000000000..2bd7b8ab8 --- /dev/null +++ b/packages/extension/scripts/scenarios/copy.js @@ -0,0 +1,8 @@ +import copyContracts from '../steps/copyContracts'; + +import Scenario from './scenario'; + +export default new Scenario( + 'Copy contracts', + [copyContracts], +); diff --git a/packages/extension/scripts/scenarios/deploy.js b/packages/extension/scripts/scenarios/deploy.js new file mode 100644 index 000000000..f4c4ecf07 --- /dev/null +++ b/packages/extension/scripts/scenarios/deploy.js @@ -0,0 +1,8 @@ +import migrateProtocolContracts from '../steps/migrate'; + +import Scenario from './scenario'; + +export default new Scenario( + 'Migrate contracts', + [migrateProtocolContracts], +); diff --git a/packages/extension/scripts/scenarios/integrationTests.js b/packages/extension/scripts/scenarios/integrationTests.js new file mode 100644 index 000000000..1c381413f --- /dev/null +++ b/packages/extension/scripts/scenarios/integrationTests.js @@ -0,0 +1,31 @@ +import launchGanache from '../steps/ganache'; +import compileProtocolContracts from '../steps/compile'; +import migrateProtocolContracts from '../steps/migrate'; +import installCertificate from '../steps/installCertificate'; +import createCertificate from '../steps/createCertificate'; +import serveSDK from '../steps/serveSDK'; +import serveTemplate from '../steps/serveTemplate'; +import launchGSN from '../steps/launchGSN'; +import copyContracts from '../steps/copyContracts'; +import buildExtension from '../steps/buildExtension'; +import runIntegrationTest from '../steps/runIntegrationTest'; + +import Scenario from './scenario'; + +export default new Scenario( + 'Integration Tests', + [ + launchGanache, + compileProtocolContracts, + migrateProtocolContracts, + installCertificate, + createCertificate, + installCertificate, + serveSDK, + serveTemplate, + launchGSN, + copyContracts, + buildExtension, + runIntegrationTest, + ], +); diff --git a/packages/extension/scripts/scenarios/scenario.js b/packages/extension/scripts/scenarios/scenario.js new file mode 100644 index 000000000..ab6c46d0e --- /dev/null +++ b/packages/extension/scripts/scenarios/scenario.js @@ -0,0 +1,26 @@ +export default class Scenario { + steps = []; + + shells = []; + + name = ''; + + constructor(name, steps) { + this.name = name; + this.steps = steps; + } + + async cleanup() { + this.shells.forEach(s => s.kill()); + } + + async run() { + await this.steps.reduce((p, fn) => p + .then(fn) + .then((shell) => { + this.shells.push(shell); + }), Promise.resolve()); + + await this.cleanup(); + } +} diff --git a/packages/extension/scripts/scenarios/start.js b/packages/extension/scripts/scenarios/start.js new file mode 100644 index 000000000..b35e89c0e --- /dev/null +++ b/packages/extension/scripts/scenarios/start.js @@ -0,0 +1,75 @@ +// import detectPort from 'detect-port'; +import chalk from 'chalk'; + +import { + log, +} from '../utils/log'; + +import launchGanache from '../steps/ganache'; +import compileProtocolContracts from '../steps/compile'; +import migrateProtocolContracts from '../steps/migrate'; +import installCertificate from '../steps/installCertificate'; +import createCertificate from '../steps/createCertificate'; +import serveSDK from '../steps/serveSDK'; +import serveTemplate from '../steps/serveTemplate'; +import launchGSN from '../steps/launchGSN'; +import copyContracts from '../steps/copyContracts'; +import buildExtension from '../steps/buildExtension'; + +import Scenario from './scenario'; + +// const showHints = () => { +// log('\n'); +// log('\n'); +// log(' To see demo, run the following in other terminal windows:\n'); +// log(` ${chalk.cyan('yarn watch')} - watch file changes in /src.`); +// log(` ${chalk.cyan('http-server -p 5555 --cors -s')} - run it in ${chalk.yellow('/build')}.`); +// log(` ${chalk.cyan('http-server -p 3000')} - run it in ${chalk.yellow('/demo')}.`); +// log('\n'); +// log(' Run these commands if you change the files that are not being watched:\n'); +// log(` ${chalk.cyan('yarn copy')} - copy icons to their destination.`); +// log(` run this if package ${chalk.yellow('eth-contract-metadata')} is changed.`); +// log(` ${chalk.cyan('yarn deploy:contracts')} - migrate contracts.`); +// log(` run this if any file in ${chalk.yellow('/contracts')} is changed.`); +// log(` ${chalk.cyan('yarn generate:styles')} - generate css files and style config.`); +// log(` run this if ${chalk.yellow('guacamole.config.js')} is changed.`); +// log('\n'); +// log(' To lint all files:'); +// log(` ${chalk.magenta('yarn lint')}`); +// log('\n'); +// log(' To run all tests:'); +// log(` ${chalk.magenta('yarn test')}`); +// log('\n'); +// log(' To test a specific file:'); +// log(` ${chalk.magenta('jest [FILE_NAME]')}`); +// log('\n'); +// log(` Press ${chalk.yellow('h')} to show the above hints again.`); +// log('\n'); +// log('\n'); +// }; + +// const handleStart = () => { +// log('\n'); +// log('\n'); +// log(`${chalk.green('✔')} Contracts were deployed, artifacts were copied, birds are chirping, everything is perfect!`); +// log(' Next, you can...'); +// showHints(); +// }; + + +export default new Scenario( + 'Start Ganache', + [ + launchGanache, + compileProtocolContracts, + migrateProtocolContracts, + installCertificate, + createCertificate, + installCertificate, + serveSDK, + serveTemplate, + launchGSN, + copyContracts, + buildExtension, + ], +); diff --git a/packages/extension/scripts/steps/buildExtension.js b/packages/extension/scripts/steps/buildExtension.js new file mode 100644 index 000000000..bc596893d --- /dev/null +++ b/packages/extension/scripts/steps/buildExtension.js @@ -0,0 +1,7 @@ +import build from '../tasks/yarn/build'; + +export default async function buildExtension() { + const buildFn = build('extension'); + + return buildFn.launch([]); +} diff --git a/packages/extension/scripts/steps/compile.js b/packages/extension/scripts/steps/compile.js new file mode 100644 index 000000000..70bcb8102 --- /dev/null +++ b/packages/extension/scripts/steps/compile.js @@ -0,0 +1,6 @@ +import compile from '../tasks/truffle/compile'; + +export default async function compileProtocolContracts() { + const compileProtocol = compile('protocol'); + return compileProtocol.launch([]); +} diff --git a/packages/extension/scripts/steps/copyContracts.js b/packages/extension/scripts/steps/copyContracts.js new file mode 100644 index 000000000..da1e42e55 --- /dev/null +++ b/packages/extension/scripts/steps/copyContracts.js @@ -0,0 +1,15 @@ +import path from 'path'; + +import { + locatePackage, +} from '../utils/path'; +import copy from '../tasks/utils/copy'; + +export default async function copyContracts() { + const protocolPath = locatePackage('protocol'); + const extensionPath = locatePackage('extension'); + + const contractsSrc = path.join(protocolPath, 'build/contracts'); + const contractsDest = path.join(extensionPath, 'build'); + return copy.launch([contractsSrc, contractsDest]); +} diff --git a/packages/extension/scripts/steps/createCertificate.js b/packages/extension/scripts/steps/createCertificate.js new file mode 100644 index 000000000..dcd40fed8 --- /dev/null +++ b/packages/extension/scripts/steps/createCertificate.js @@ -0,0 +1,5 @@ +import certs from '../tasks/http-server/certs'; + +export default async function createCertificate() { + return certs.launch(['"localhost"']); +} diff --git a/packages/extension/scripts/steps/ganache.js b/packages/extension/scripts/steps/ganache.js new file mode 100644 index 000000000..706629efe --- /dev/null +++ b/packages/extension/scripts/steps/ganache.js @@ -0,0 +1,8 @@ +import ganache from '../tasks/ganache/cli'; +import generateAccounts from '../utils/accounts'; + +export default async function launchGanache() { + const accounts = generateAccounts(); + const params = ['-p', 8545, '-i', 'development']; + return ganache.launch(params.concat(accounts)); +} diff --git a/packages/extension/scripts/steps/installCertificate.js b/packages/extension/scripts/steps/installCertificate.js new file mode 100644 index 000000000..76786aaa2 --- /dev/null +++ b/packages/extension/scripts/steps/installCertificate.js @@ -0,0 +1,5 @@ +import certs from '../tasks/http-server/certs'; + +export default async function installCertificate() { + return certs.launch(['-install']); +} diff --git a/packages/extension/scripts/steps/launchGSN.js b/packages/extension/scripts/steps/launchGSN.js new file mode 100644 index 000000000..eaf12bf23 --- /dev/null +++ b/packages/extension/scripts/steps/launchGSN.js @@ -0,0 +1,60 @@ +import Web3 from 'web3'; + +import { + defaultFromAccount, +} from '../utils/GNSHelpers'; + +import { + DEFAULT_GSN_RELAYER_PORT, +} from '../config/constants'; + +import gsn from '../tasks/gsn/launch'; + +import '../../env'; +import ganacheConfig from '../../config/ganache'; +import getNetwork from '../utils/getNetwork'; + +import { + argv, +} from '../utils/cmd'; + +const network = getNetwork(); + +const defaultPort = 8545; + +export const getPort = (fallbackPort = defaultPort) => { + let port = argv('port'); + if (!port) { + ({ + port, + } = (ganacheConfig.networks || {})[network] || {}); + } + + return port || fallbackPort; +}; + +export const getHost = () => { + const { + host = 'localhost', + } = (ganacheConfig.networks || {})[network] || {}; + + return `http://${host}`; +}; + + +export default async function launchGSN() { + const relayUrl = `${getHost()}:${DEFAULT_GSN_RELAYER_PORT}`; + const port = getPort(0); + const host = getHost(); + const providerUrl = `${host}:${port}`; + const provider = new Web3.providers.HttpProvider(providerUrl); + const web3 = new Web3(provider); + const from = await defaultFromAccount(web3); + + return gsn.launch([ + '--relayUrl', relayUrl, + '--ethereumNodeURL', providerUrl, + '-f', from, + '--workdir', gsn.cwd, + ]); +} diff --git a/packages/extension/scripts/steps/migrate.js b/packages/extension/scripts/steps/migrate.js new file mode 100644 index 000000000..f43dbd220 --- /dev/null +++ b/packages/extension/scripts/steps/migrate.js @@ -0,0 +1,6 @@ +import migrate from '../tasks/truffle/migrate'; + +export default async function migrateProtocolContracts() { + const migrateProtocol = migrate('protocol'); + return migrateProtocol.launch(['--network', 'test', '--reset']); +} diff --git a/packages/extension/scripts/steps/runIntegrationTest.js b/packages/extension/scripts/steps/runIntegrationTest.js new file mode 100644 index 000000000..4504f204e --- /dev/null +++ b/packages/extension/scripts/steps/runIntegrationTest.js @@ -0,0 +1,7 @@ +import test from '../tasks/truffle/test'; + +export default async function buildExtension() { + return test.launch(['./test/*'], { + silent: false, + }); +} diff --git a/packages/extension/scripts/steps/serveSDK.js b/packages/extension/scripts/steps/serveSDK.js new file mode 100644 index 000000000..f6119d2b6 --- /dev/null +++ b/packages/extension/scripts/steps/serveSDK.js @@ -0,0 +1,19 @@ +import path from 'path'; + +import { + locatePackage, +} from '../utils/path'; +import serve from '../tasks/http-server/serve'; + +export default async function serveSDK() { + const buildFolder = path.resolve(locatePackage('extension'), './build'); + const serveFolder = serve(buildFolder); + + return serveFolder.launch([ + '-p', '5555', + '--cors', '--ssl', + '-C', path.join(path.relative(serveFolder.cwd, locatePackage('extension')), 'localhost.pem'), + '-K', path.join(path.relative(serveFolder.cwd, locatePackage('extension')), 'localhost-key.pem'), + '-a', '127.0.0.1', + ]); +} diff --git a/packages/extension/scripts/steps/serveTemplate.js b/packages/extension/scripts/steps/serveTemplate.js new file mode 100644 index 000000000..67bc28c1d --- /dev/null +++ b/packages/extension/scripts/steps/serveTemplate.js @@ -0,0 +1,19 @@ +import path from 'path'; + +import { + locatePackage, +} from '../utils/path'; +import serve from '../tasks/http-server/serve'; + +export default async function serveTemplate() { + const harnessFolder = path.resolve(locatePackage('extension'), './test/harness'); + const serveFolder = serve(harnessFolder); + + return serveFolder.launch([ + '-p', '5550', + '--cors', '--ssl', + '-C', path.join(path.relative(serveFolder.cwd, locatePackage('extension')), 'localhost.pem'), + '-K', path.join(path.relative(serveFolder.cwd, locatePackage('extension')), 'localhost-key.pem'), + '-a', '127.0.0.1', + ]); +} diff --git a/packages/extension/scripts/tasks/copy/copyContracts.js b/packages/extension/scripts/tasks/copy/copyContracts.js deleted file mode 100644 index 79c55aa69..000000000 --- a/packages/extension/scripts/tasks/copy/copyContracts.js +++ /dev/null @@ -1,52 +0,0 @@ -import path from 'path'; -import { - successLog, - errorLog, - logEntries, -} from '../../utils/log'; -import { - projectRoot, - locatePackage, -} from '../../utils/path'; -import { - isDirectory, -} from '../../utils/fs'; -import instance from '../../utils/instance'; - -const sourcePackage = 'protocol'; -const folderName = 'contracts'; -const sourceFolder = 'build'; -const destFolder = 'build'; - -export default function copyContracts({ - onError, - onClose, -} = {}) { - const packagePath = locatePackage(sourcePackage); - if (!packagePath) { - errorLog(`Cannot locate package "${sourcePackage}".`); - onError(); - return; - } - - const contractsPath = path.join(packagePath, `${sourceFolder}/${folderName}`); - if (!isDirectory(contractsPath)) { - errorLog('Cannot find source contracts', contractsPath); - onError(); - return; - } - - const destPath = path.join(projectRoot, destFolder); - - instance( - `cp -r ${contractsPath} ${destPath}`, - { - onError, - onClose: () => { - successLog('\nSuccessfully copied contracts!'); - logEntries([`${sourcePackage} > ${destFolder}/${folderName}`]); - onClose(); - }, - }, - ); -} diff --git a/packages/extension/scripts/tasks/copy/copyTokenIcons.js b/packages/extension/scripts/tasks/copy/copyTokenIcons.js deleted file mode 100644 index afacdbd8f..000000000 --- a/packages/extension/scripts/tasks/copy/copyTokenIcons.js +++ /dev/null @@ -1,47 +0,0 @@ -import path from 'path'; -import { - successLog, - errorLog, - logEntries, -} from '../../utils/log'; -import { - projectRoot, - locateModule, -} from '../../utils/path'; -import { - isDirectory, - ensureDirectory, - copyFolder, -} from '../../utils/fs'; - -const sourceModule = 'eth-contract-metadata'; -const destFolder = 'build/sdk/public/tokens'; - -export default function copyTokenIcons({ - onError, - onClose, -} = {}) { - const modulePath = locateModule(sourceModule); - if (!modulePath) { - errorLog(`Cannot locate module "${sourceModule}".`); - onError(); - return; - } - - const iconsPath = path.join(modulePath, 'images'); - if (!isDirectory(iconsPath)) { - errorLog('Cannot find source icons', iconsPath); - onError(); - return; - } - - const destPath = path.join(projectRoot, destFolder); - ensureDirectory(destPath); - - copyFolder(iconsPath, destPath); - - successLog('Successfully copied token icons!'); - logEntries([`${sourceModule} > ${destFolder}`]); - - onClose(); -} diff --git a/packages/extension/scripts/tasks/copy/index.js b/packages/extension/scripts/tasks/copy/index.js deleted file mode 100644 index c1e12d83f..000000000 --- a/packages/extension/scripts/tasks/copy/index.js +++ /dev/null @@ -1,19 +0,0 @@ -import pipeTasks from '../../utils/pipeTasks'; -import copyTokenIcons from './copyTokenIcons'; -import copyContracts from './copyContracts'; - -export default async function copy({ - onError, - onClose, -} = {}) { - return pipeTasks( - [ - copyTokenIcons, - copyContracts, - ], - { - onError, - onClose, - }, - ); -} diff --git a/packages/extension/scripts/tasks/deployContracts.js b/packages/extension/scripts/tasks/deployContracts.js deleted file mode 100644 index 88dbde94c..000000000 --- a/packages/extension/scripts/tasks/deployContracts.js +++ /dev/null @@ -1,17 +0,0 @@ -import pipeTasks from '../utils/pipeTasks'; -import migrateProtocol from './migrateProtocol'; - -export default function deployContracts({ - onError, - onClose, -} = {}) { - pipeTasks( - [ - migrateProtocol, - ], - { - onError, - onClose, - }, - ); -} diff --git a/packages/extension/scripts/tasks/factory.js b/packages/extension/scripts/tasks/factory.js new file mode 100644 index 000000000..c72069cc4 --- /dev/null +++ b/packages/extension/scripts/tasks/factory.js @@ -0,0 +1,88 @@ +/* eslint-disable consistent-return */ +/* eslint-disable max-len */ +import { spawn } from 'child_process'; + +import { + errorLog, + log, +} from '../utils/log'; + +export default function taskFactory( + executable, + cmd, + cwd, + { + isReadyPredicate = undefined, + wait = false, + } = {}, + env = process.env, +) { + const fn = (args, { + silent = true, + waitForReady = !!isReadyPredicate, + waitForExit = wait, + } = {}) => new Promise((resolve) => { + let ready = false; + log(`######## Spawn ${executable}`); + try { + const shell = spawn( + `${executable} ${cmd}`, + args, + { + shell: true, + cwd, + env, + }, + ); + + shell.stdout.on('data', (text) => { + + if (!silent) { + log(text.toString()); + } + + if (waitForReady && isReadyPredicate(text.toString()) && !ready) { + log(`######## ${executable} ready`); + ready = true; + return resolve(shell); + } + }); + + + shell.stderr.on('data', (text) => { + + if (!silent) { + errorLog(text.toString()); + } + + if (waitForReady && isReadyPredicate(text.toString()) && !ready) { + log(`######## ${executable} ready`); + ready = true; + return resolve(shell); + } + }); + + shell.on('close', () => { + + if (waitForExit) { + log(`######## ${executable} finished`); + return resolve(shell); + } + }); + + if (!waitForReady && !waitForExit) { + return resolve(shell); + } + } catch (e) { + errorLog(`${executable} failed to spawn`); + errorLog(e); + } + }); + + return { + launch: fn, + executable, + cmd, + cwd, + }; +} diff --git a/packages/extension/scripts/tasks/ganache/cli.js b/packages/extension/scripts/tasks/ganache/cli.js new file mode 100644 index 000000000..037c323c0 --- /dev/null +++ b/packages/extension/scripts/tasks/ganache/cli.js @@ -0,0 +1,9 @@ +import taskFactory from '../factory'; +import isReadyPredicateFactory from '../../utils/isReady'; +import { + locatePackage, +} from '../../utils/path'; + +export default taskFactory('ganache-cli', '', locatePackage('extension'), { + isReadyPredicate: isReadyPredicateFactory('Listening on'), +}); diff --git a/packages/extension/scripts/tasks/gsn/launch.js b/packages/extension/scripts/tasks/gsn/launch.js new file mode 100644 index 000000000..b7d30bc5e --- /dev/null +++ b/packages/extension/scripts/tasks/gsn/launch.js @@ -0,0 +1,10 @@ +import path from 'path'; + +import taskFactory from '../factory'; +import isReadyPredicateFactory from '../../utils/isReady'; +import { + locatePackage, +} from '../../utils/path'; + + +export default taskFactory('npx', 'oz-gsn run-relayer --detach --quiet', path.resolve(locatePackage('extension'), './build/gsn'), { isReadyPredicate: isReadyPredicateFactory('Relay is funded and ready!') }); diff --git a/packages/extension/scripts/tasks/http-server/certs.js b/packages/extension/scripts/tasks/http-server/certs.js new file mode 100644 index 000000000..491cbb631 --- /dev/null +++ b/packages/extension/scripts/tasks/http-server/certs.js @@ -0,0 +1,6 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default taskFactory('mkcert', '', locatePackage('extension'), { wait: true }); diff --git a/packages/extension/scripts/tasks/http-server/serve.js b/packages/extension/scripts/tasks/http-server/serve.js new file mode 100644 index 000000000..e27db24d7 --- /dev/null +++ b/packages/extension/scripts/tasks/http-server/serve.js @@ -0,0 +1,4 @@ +import taskFactory from '../factory'; +import isReadyPredicateFactory from '../../utils/isReady'; + +export default folderToServe => taskFactory('http-server', '', folderToServe, { isReadyPredicate: isReadyPredicateFactory('Hit CTRL-C to stop the server') }); diff --git a/packages/extension/scripts/tasks/migrateExtension.js b/packages/extension/scripts/tasks/migrateExtension.js deleted file mode 100644 index cf002f6ff..000000000 --- a/packages/extension/scripts/tasks/migrateExtension.js +++ /dev/null @@ -1,12 +0,0 @@ -import migrateContractsInstance from '../instances/migrateContractsInstance'; - -export default function migrateExtension({ - onError, - onClose, -} = {}) { - return migrateContractsInstance({ - packageName: 'extension', - onError, - onClose, - }); -} diff --git a/packages/extension/scripts/tasks/migrateProtocol.js b/packages/extension/scripts/tasks/migrateProtocol.js deleted file mode 100644 index 6720a7e92..000000000 --- a/packages/extension/scripts/tasks/migrateProtocol.js +++ /dev/null @@ -1,13 +0,0 @@ -import migrateContractsInstance from '../instances/migrateContractsInstance'; - -export default function migrateProtocol({ - onError, - onClose, -} = {}) { - return migrateContractsInstance({ - packageName: 'protocol', - network: 'test', - onError, - onClose, - }); -} diff --git a/packages/extension/scripts/tasks/setup.js b/packages/extension/scripts/tasks/setup.js deleted file mode 100644 index 53fe82b1e..000000000 --- a/packages/extension/scripts/tasks/setup.js +++ /dev/null @@ -1,138 +0,0 @@ -import { - terminal, -} from 'terminal-kit'; -import chalk from 'chalk'; -import ganacheInstance from '../instances/ganacheInstance'; -import gsnRelayerInstance from '../instances/gsnRelayerInstance'; -import { - log, - successLog, - warnLog, -} from '../utils/log'; -import pipeTasks, { - log as logTask, -} from '../utils/pipeTasks'; -import stopProcesses from '../utils/stopProcesses'; -import deployContracts from './deployContracts'; -import waitUntilGSNRealyerUp from './waitUntilGSNRealyerUp'; -import copy from './copy'; - -export default function setup({ - onStart, - onError, - onClose, - showHints, -} = {}) { - const runningProcesses = {}; - let confirmClose; - - const doClose = () => { - if (onClose) { - onClose(true); - } else { - setTimeout(() => { - process.exit(0); - }, 100); - } - }; - - const handleClose = async () => { - terminal.grabInput(false); - stopProcesses(runningProcesses, (name) => { - runningProcesses[name] = null; - }); - }; - - const makeCloseChildProcessCallback = name => () => { - if (!(name in runningProcesses)) return; - - delete runningProcesses[name]; - successLog(`${name} instance stopped.`); - - if (Object.keys(runningProcesses).length) { - handleClose(); - } else { - doClose(); - } - }; - - terminal.grabInput(true); - terminal.on('key', (key) => { - switch (key) { - case 'CTRL_C': { - if (!confirmClose) { - confirmClose = true; - warnLog('\nGracefully stopping child processes...\n'); - log('Press ctrl+c again to force exit.'); - log("(This may cause some problems when running 'yarn start' again.)\n"); - handleClose(); - } else { - process.exit(0); - } - break; - } - case 'h': - case 'H': { - if (showHints) { - showHints(); - } - break; - } - case 'ENTER': - log('\n'); - break; - default: - if (confirmClose) { - confirmClose = false; - } - } - }); - - const handleError = onError - || (() => { - if (onClose) { - onClose(); - } - }); - - const handleBuildError = () => { - log(''); - warnLog('Something went wrong'); - log(''); - log(`Please fix the above error and then run ${chalk.cyan('yarn rebuild:contracts')} in another terminal window.`); - log(''); - }; - - const doCloseGSNRelayer = makeCloseChildProcessCallback('gsnRelayer'); - - runningProcesses.ganache = ganacheInstance({ - onClose: makeCloseChildProcessCallback('ganache'), - onError: handleError, - }).next(async () => { - runningProcesses.gsnRelayer = await gsnRelayerInstance({ - onClose: (code) => { - if (code === 0) return; - doCloseGSNRelayer(); - }, - onError: handleError, - }); - return runningProcesses.gsnRelayer; - }).next(() => { - pipeTasks( - [ - deployContracts, - logTask('Successfully deployed contracts to ganache.'), - waitUntilGSNRealyerUp, - copy, - ], - { - onError: handleBuildError, - onClose: (error) => { - if (!error && onStart) { - onStart(runningProcesses); - } - }, - }, - ); - }); -} diff --git a/packages/extension/scripts/tasks/start.js b/packages/extension/scripts/tasks/start.js deleted file mode 100644 index 45c6d8dbb..000000000 --- a/packages/extension/scripts/tasks/start.js +++ /dev/null @@ -1,102 +0,0 @@ -import detectPort from 'detect-port'; -import chalk from 'chalk'; -import { - warnLog, - errorLog, - log, -} from '../utils/log'; -import { - argv, -} from '../utils/cmd'; -import { - getPort, -} from '../instances/ganacheInstance'; -import setup from './setup'; - -export default function start({ - onError, - onClose, -} = {}) { - const ganachePort = getPort(); - - const handleError = (error) => { - if (error) { - errorLog('Something went wrong', error); - } - if (onError) { - onError(error); - } else if (onClose) { - onClose(); - } - }; - - const showHints = () => { - log('\n'); - log('\n'); - log(' To see demo, run the following in other terminal windows:\n'); - log(` ${chalk.cyan('yarn watch')} - watch file changes in /src.`); - log(` ${chalk.cyan('http-server -p 5555 --cors -s')} - run it in ${chalk.yellow('/build')}.`); - log(` ${chalk.cyan('http-server -p 3000')} - run it in ${chalk.yellow('/demo')}.`); - log('\n'); - log(' Run these commands if you change the files that are not being watched:\n'); - log(` ${chalk.cyan('yarn copy')} - copy icons to their destination.`); - log(` run this if package ${chalk.yellow('eth-contract-metadata')} is changed.`); - log(` ${chalk.cyan('yarn deploy:contracts')} - migrate contracts.`); - log(` run this if any file in ${chalk.yellow('/contracts')} is changed.`); - log(` ${chalk.cyan('yarn generate:styles')} - generate css files and style config.`); - log(` run this if ${chalk.yellow('guacamole.config.js')} is changed.`); - log('\n'); - log(' To lint all files:'); - log(` ${chalk.magenta('yarn lint')}`); - log('\n'); - log(' To run all tests:'); - log(` ${chalk.magenta('yarn test')}`); - log('\n'); - log(' To test a specific file:'); - log(` ${chalk.magenta('jest [FILE_NAME]')}`); - log('\n'); - log(` Press ${chalk.yellow('h')} to show the above hints again.`); - log('\n'); - log('\n'); - }; - - const handleStart = () => { - log('\n'); - log('\n'); - log(`${chalk.green('✔')} Contracts were deployed, artifacts were copied, birds are chirping, everything is perfect!`); - log(' Next, you can...'); - showHints(); - }; - - detectPort(ganachePort, (error, _port) => { - if (error) { - if (onError) { - onError(error); - } - return; - } - - if (_port !== ganachePort) { - if (!argv('useExistingGanache')) { - warnLog(`There is already a process running on port ${ganachePort}`); - log(`Stop that instance or run ${chalk.cyan('yarn start --useExistingGanache')} to use the same ganache instance.'`); - - if (onClose) { - onClose(); - } else { - setTimeout(() => { - process.exit(0); - }, 100); - } - } - return; - } - - setup({ - onStart: handleStart, - onError: handleError, - onClose, - showHints, - }); - }); -} diff --git a/packages/extension/scripts/tasks/test.js b/packages/extension/scripts/tasks/test.js deleted file mode 100644 index abc0691b8..000000000 --- a/packages/extension/scripts/tasks/test.js +++ /dev/null @@ -1,97 +0,0 @@ -import detectPort from 'detect-port'; -import chalk from 'chalk'; -import { - log, - warnLog, - errorLog, -} from '../utils/log'; -import stopProcesses from '../utils/stopProcesses'; -import instance from '../utils/instance'; -import { - argv, -} from '../utils/cmd'; -import handleErrorOutputAsNormal from '../utils/handleErrorOutputAsNormal'; -import { - getPort, -} from '../instances/ganacheInstance'; -import setup from './setup'; - -export default function test({ - onError, - onClose, -} = {}) { - let runningProcesses; - const ganachePort = getPort(); - - const handleFinishTest = async () => { - if (argv('stayOpen')) { - log(`\nRun ${chalk.cyan('yarn test:run')} in another terminal window to run the tests using this setup.\n`); - return; - } - if (runningProcesses) { - stopProcesses(runningProcesses, (name) => { - runningProcesses[name] = null; - }); - } else if (onClose) { - onClose(); - } else { - setTimeout(() => { - process.exit(0); - }, 100); - } - }; - - const handleError = (error) => { - if (error) { - errorLog('Something went wrong', error); - } - if (onError) { - onError(error); - } else if (onClose) { - onClose(); - } - }; - - const runTest = (processes) => { - runningProcesses = processes; - instance( - 'jest ./tests', - { - onReceiveErrorOutput: handleErrorOutputAsNormal, - onClose: handleFinishTest, - }, - ); - }; - - detectPort(ganachePort, (error, _port) => { - if (error) { - if (onError) { - onError(error); - } - return; - } - - if (_port !== ganachePort) { - if (argv('useExistingGanache')) { - runTest(); - } else { - warnLog(`There is already a process running on port ${ganachePort}`); - log(`Stop that instance or run ${chalk.cyan('yarn test:run')} in another terminal window.`); - if (onClose) { - onClose(); - } else { - setTimeout(() => { - process.exit(0); - }, 100); - } - } - return; - } - - setup({ - onStart: runTest, - onError: handleError, - onClose, - }); - }); -} diff --git a/packages/extension/scripts/tasks/truffle/compile.js b/packages/extension/scripts/tasks/truffle/compile.js new file mode 100644 index 000000000..1da1ad722 --- /dev/null +++ b/packages/extension/scripts/tasks/truffle/compile.js @@ -0,0 +1,6 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default packageName => taskFactory('truffle', 'compile --all', locatePackage(packageName), { wait: true }); diff --git a/packages/extension/scripts/tasks/truffle/migrate.js b/packages/extension/scripts/tasks/truffle/migrate.js new file mode 100644 index 000000000..0ceab49d2 --- /dev/null +++ b/packages/extension/scripts/tasks/truffle/migrate.js @@ -0,0 +1,6 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default packageName => taskFactory('truffle', 'migrate --reset', locatePackage(packageName), { wait: true }); diff --git a/packages/extension/scripts/tasks/truffle/test.js b/packages/extension/scripts/tasks/truffle/test.js new file mode 100644 index 000000000..f9d3c0424 --- /dev/null +++ b/packages/extension/scripts/tasks/truffle/test.js @@ -0,0 +1,9 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default taskFactory('truffle', 'test', locatePackage('extension'), { wait: true }, { + NODE_ENV: 'integration', + ...process.env, +}); diff --git a/packages/extension/scripts/tasks/utils/copy.js b/packages/extension/scripts/tasks/utils/copy.js new file mode 100644 index 000000000..530e106a6 --- /dev/null +++ b/packages/extension/scripts/tasks/utils/copy.js @@ -0,0 +1,6 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default taskFactory('cp', '-r', locatePackage('extension'), { wait: true }); diff --git a/packages/extension/scripts/tasks/waitUntilGSNRealyerUp.js b/packages/extension/scripts/tasks/waitUntilGSNRealyerUp.js deleted file mode 100644 index 187691a23..000000000 --- a/packages/extension/scripts/tasks/waitUntilGSNRealyerUp.js +++ /dev/null @@ -1,21 +0,0 @@ -import { - waitForRelay, -} from '../utils/GNSHelpers'; -import { - DEFAULT_GSN_RELAYER_PORT, -} from '../config/constants'; - - -export default async function waitUntilGSNRealyerUp({ - onError, - onClose, -} = {}) { - const relayUrl = `http://localhost:${DEFAULT_GSN_RELAYER_PORT}`; - - try { - await waitForRelay(relayUrl); - onClose(); - } catch (e) { - onError(e); - } -} diff --git a/packages/extension/scripts/tasks/yarn/build.js b/packages/extension/scripts/tasks/yarn/build.js new file mode 100644 index 000000000..2f38482d5 --- /dev/null +++ b/packages/extension/scripts/tasks/yarn/build.js @@ -0,0 +1,6 @@ +import taskFactory from '../factory'; +import { + locatePackage, +} from '../../utils/path'; + +export default packageName => taskFactory('yarn', 'build:dev', locatePackage(packageName), { wait: true }); diff --git a/packages/extension/scripts/utils/accounts.js b/packages/extension/scripts/utils/accounts.js new file mode 100644 index 000000000..e9ba3835f --- /dev/null +++ b/packages/extension/scripts/utils/accounts.js @@ -0,0 +1,39 @@ +import { toWei } from 'web3-utils'; +import { privateToAddress } from 'ethereumjs-util'; + +import getNetwork from './getNetwork'; + +import ganacheConfig from '../../config/ganache'; + +const defaultNumberOfAccounts = 10; +const network = getNetwork(); + +export default function generateAccounts() { + const accounts = []; + const { + numberOfAccounts = defaultNumberOfAccounts, + defaultBalanceEther = 0, + } = (ganacheConfig.networks || {})[network] || {}; + + for (let i = 0; i < numberOfAccounts; i += 1) { + let address; + const privateKey = process.env[`GANACHE_TESTING_ACCOUNT_${i}`]; + if (privateKey) { + address = privateToAddress(privateKey); + const balance = toWei( + `${process.env[`GANACHE_TESTING_ACCOUNT_${i}_BALANCE`] || defaultBalanceEther}`, + 'ether', + ); + accounts.push({ + address, + privateKey, + balance, + }); + } + } + return accounts + .reduce((acc, { privateKey, balance }) => { + acc.push(`--account=${privateKey},${balance}`); + return acc; + }, []); +}; \ No newline at end of file diff --git a/packages/extension/scripts/utils/instance.js b/packages/extension/scripts/utils/instance.js index 2a98a5398..624f3bf71 100644 --- a/packages/extension/scripts/utils/instance.js +++ b/packages/extension/scripts/utils/instance.js @@ -98,7 +98,7 @@ const childProcessHandler = (childProcess, { if (onReceiveOutput) { onReceiveOutput(output); } else { - process.stdout.write(output); + // process.stdout.write(output); } }; @@ -117,7 +117,7 @@ const childProcessHandler = (childProcess, { if (onReceiveErrorOutput) { onReceiveErrorOutput(output); } else { - log(`stderr:\n ${output}`); + // log(`stderr:\n ${output}`); } }); @@ -152,12 +152,14 @@ export default function instance(...args) { || (args.length === 2 && !Array.isArray(args[1])) ) { [command, options] = args; + errorLog(command); childProcess = exec(command); } else { [command, params, options] = args; const { windowsVerbatimArguments, } = options; + errorLog(command, params); childProcess = spawn( command, params, diff --git a/packages/extension/scripts/utils/isReady.js b/packages/extension/scripts/utils/isReady.js new file mode 100644 index 000000000..0701c7894 --- /dev/null +++ b/packages/extension/scripts/utils/isReady.js @@ -0,0 +1,3 @@ +export default function isReadyPredicateFactory(text) { + return output => output.includes(text); +} diff --git a/packages/extension/src/config/contracts/contracts.js b/packages/extension/src/config/contracts/contracts.js index d55c0e415..f92d5eb91 100644 --- a/packages/extension/src/config/contracts/contracts.js +++ b/packages/extension/src/config/contracts/contracts.js @@ -1,6 +1,6 @@ export default { AccountRegistry: { - name: 'AccountRegistry', + name: 'Behaviour20200106', events: { registerExtension: 'RegisterExtension', }, diff --git a/packages/extension/src/config/urls.js b/packages/extension/src/config/urls.js index e74e160dc..94c1afd29 100644 --- a/packages/extension/src/config/urls.js +++ b/packages/extension/src/config/urls.js @@ -9,10 +9,10 @@ const production = { }; const development = { - origin: 'http://localhost:5555', - public: 'http://localhost:5555/sdk/public', - background: 'http://localhost:5555/sdk/public/background.html', - ui: 'http://localhost:5555/sdk/public/ui.html', + origin: 'https://localhost:5555', + public: 'https://localhost:5555/sdk/public', + background: 'https://localhost:5555/sdk/public/background.html', + ui: 'https://localhost:5555/sdk/public/ui.html', apiKeyQuota, }; diff --git a/packages/extension/test/AZTECAccountRegistry.spec.js b/packages/extension/test/AZTECAccountRegistry.spec.js index b2797724b..5770e04a5 100644 --- a/packages/extension/test/AZTECAccountRegistry.spec.js +++ b/packages/extension/test/AZTECAccountRegistry.spec.js @@ -1,159 +1,159 @@ -/* global artifacts, expect, contract, beforeEach, it:true */ -// ### External Dependencies -const dotenv = require('dotenv'); - -const truffleAssert = require('truffle-assertions'); -const nacl = require('tweetnacl'); -nacl.util = require('tweetnacl-util'); - -// ### Internal Dependencies -const devUtils = require('@aztec/dev-utils'); -const aztec = require('aztec.js'); -const secp256k1 = require('@aztec/secp256k1'); -const typedData = require('@aztec/typed-data'); -const sigUtil = require('eth-sig-util'); -const { keccak256 } = require('web3-utils'); - -// ### Artifacts -const AZTECAccountRegistry = artifacts.require('./AZTECAccountRegistry'); - -dotenv.config(); - -const { EIP712_DOMAIN } = devUtils.constants.eip712; - -const signatureSchema = { - types: { - AZTECAccount: [ - { name: 'account', type: 'address' }, - { name: 'linkedPublicKey', type: 'bytes' }, - ], - EIP712Domain: EIP712_DOMAIN, - }, - primaryType: 'AZTECAccount', -}; - -contract('AZTECAccountRegistry', (accounts) => { - describe('Success States', () => { - let registryContract; - let domain; - - beforeEach(async () => { - registryContract = await AZTECAccountRegistry.new({from: accounts[0]}); - domain = { - name: 'AZTECAccountRegistry', - version: '2', - verifyingContract: registryContract.address - }; - }); - - it('be able to register the extension for the sender account', async () => { - const { privateKey, publicKey, address } = secp256k1.generateAccount(); - const message = { - account: address, - linkedPublicKey: keccak256('0x01'), - }; - const { receipt: registerExtensionReceipt } = await registryContract.registerAZTECExtension( - accounts[0], - keccak256('0x01'), - '0x' - ); - - expect(registerExtensionReceipt); - - }); - - it('be able to register the extension with a valid signature', async () => { - - const { privateKey, publicKey, address } = secp256k1.generateAccount(); - const message = { - account: address, - linkedPublicKey: keccak256('0x01'), - }; - - const encodedTypedData = typedData.encodeTypedData({ - domain, - ...signatureSchema, - message, - }); - - - const signature = secp256k1.ecdsa.signMessage(encodedTypedData, privateKey); - - const r = signature[1]; - const s = signature[2].slice(2); - const v = signature[0].slice(-2); - const sig = r + s + v; - - - const { receipt: registerExtensionReceipt } = await registryContract.registerAZTECExtension( - address, - keccak256('0x01'), - sig, - {from: accounts[2]} - ); - expect(registerExtensionReceipt.status).to.equal(true); - }); - - it('be able to commit to a registration code', async () => { +// /* global artifacts, expect, contract, beforeEach, it:true */ +// // ### External Dependencies +// const dotenv = require('dotenv'); + +// const truffleAssert = require('truffle-assertions'); +// const nacl = require('tweetnacl'); +// nacl.util = require('tweetnacl-util'); + +// // ### Internal Dependencies +// const devUtils = require('@aztec/dev-utils'); +// const aztec = require('aztec.js'); +// const secp256k1 = require('@aztec/secp256k1'); +// const typedData = require('@aztec/typed-data'); +// const sigUtil = require('eth-sig-util'); +// const { keccak256 } = require('web3-utils'); + +// // ### Artifacts +// const AZTECAccountRegistry = artifacts.require('./AZTECAccountRegistry'); + +// dotenv.config(); + +// const { EIP712_DOMAIN } = devUtils.constants.eip712; + +// const signatureSchema = { +// types: { +// AZTECAccount: [ +// { name: 'account', type: 'address' }, +// { name: 'linkedPublicKey', type: 'bytes' }, +// ], +// EIP712Domain: EIP712_DOMAIN, +// }, +// primaryType: 'AZTECAccount', +// }; + +// contract('AZTECAccountRegistry', (accounts) => { +// describe('Success States', () => { +// let registryContract; +// let domain; + +// beforeEach(async () => { +// registryContract = await AZTECAccountRegistry.new({from: accounts[0]}); +// domain = { +// name: 'AZTECAccountRegistry', +// version: '2', +// verifyingContract: registryContract.address +// }; +// }); + +// it('be able to register the extension for the sender account', async () => { +// const { privateKey, publicKey, address } = secp256k1.generateAccount(); +// const message = { +// account: address, +// linkedPublicKey: keccak256('0x01'), +// }; +// const { receipt: registerExtensionReceipt } = await registryContract.registerAZTECExtension( +// accounts[0], +// keccak256('0x01'), +// '0x', +// ); + +// expect(registerExtensionReceipt); + +// }); + +// it('be able to register the extension with a valid signature', async () => { + +// const { privateKey, publicKey, address } = secp256k1.generateAccount(); +// const message = { +// account: address, +// linkedPublicKey: keccak256('0x01'), +// }; + +// const encodedTypedData = typedData.encodeTypedData({ +// domain, +// ...signatureSchema, +// message, +// }); + + +// const signature = secp256k1.ecdsa.signMessage(encodedTypedData, privateKey); + +// const r = signature[1]; +// const s = signature[2].slice(2); +// const v = signature[0].slice(-2); +// const sig = r + s + v; + + +// const { receipt: registerExtensionReceipt } = await registryContract.registerAZTECExtension( +// address, +// keccak256('0x01'), +// sig, +// {from: accounts[2]} +// ); +// expect(registerExtensionReceipt.status).to.equal(true); +// }); + +// it('be able to commit to a registration code', async () => { - }); - }); - - describe('Failure States', () => { - - let registryContract; - let domain; - - beforeEach(async () => { - registryContract = await AZTECAccountRegistry.new({from: accounts[0]}); - domain = { - name: 'AZTEC_ACCOUNT_REGISTRY', - version: '1', - verifyingContract: registryContract.address, - }; - }); - - it('should fail to register the extension if the signature does not match the account', async () => { - - const { privateKey, publicKey, address } = secp256k1.generateAccount(); - const message = { - account: address, - linkedPublicKey: keccak256('0x01'), - }; - const encodedTypedData = typedData.encodeTypedData({ - domain, - ...signatureSchema, - message, - }); - - - const signature = secp256k1.ecdsa.signMessage(encodedTypedData, privateKey); - - const sig= signature[0] + signature[1].slice(2) + signature[2].slice(2); - - await truffleAssert.reverts(registryContract.registerAZTECExtension( - accounts[0], - keccak256('0x01'), - sig - )); - }); - - it('should fail to register the extension if the sender does not match the account', async () => { - const { privateKey, publicKey, address } = secp256k1.generateAccount(); - const message = { - account: address, - linkedPublicKey: keccak256('0x01'), - }; - await truffleAssert.reverts(registryContract.registerAZTECExtension( - address, - keccak256('0x01'), - '0x' - )); - - }); - - - }); -}); +// }); +// }); + +// describe('Failure States', () => { + +// let registryContract; +// let domain; + +// beforeEach(async () => { +// registryContract = await AZTECAccountRegistry.new({from: accounts[0]}); +// domain = { +// name: 'AZTEC_ACCOUNT_REGISTRY', +// version: '1', +// verifyingContract: registryContract.address, +// }; +// }); + +// it('should fail to register the extension if the signature does not match the account', async () => { + +// const { privateKey, publicKey, address } = secp256k1.generateAccount(); +// const message = { +// account: address, +// linkedPublicKey: keccak256('0x01'), +// }; +// const encodedTypedData = typedData.encodeTypedData({ +// domain, +// ...signatureSchema, +// message, +// }); + + +// const signature = secp256k1.ecdsa.signMessage(encodedTypedData, privateKey); + +// const sig= signature[0] + signature[1].slice(2) + signature[2].slice(2); + +// await truffleAssert.reverts(registryContract.registerAZTECExtension( +// accounts[0], +// keccak256('0x01'), +// sig +// )); +// }); + +// it('should fail to register the extension if the sender does not match the account', async () => { +// const { privateKey, publicKey, address } = secp256k1.generateAccount(); +// const message = { +// account: address, +// linkedPublicKey: keccak256('0x01'), +// }; +// await truffleAssert.reverts(registryContract.registerAZTECExtension( +// address, +// keccak256('0x01'), +// '0x' +// )); + +// }); + + +// }); +// }); diff --git a/packages/extension/test/ExtensionUI.js b/packages/extension/test/ExtensionUI.js index 4511dbced..788d2d529 100644 --- a/packages/extension/test/ExtensionUI.js +++ b/packages/extension/test/ExtensionUI.js @@ -1,11 +1,7 @@ -/* global artifacts, expect, contract, beforeEach, it:true */ +/* global artifacts, expect, contract, it:true */ // ### External Dependencies -const { expect } = require('chai'); -const chai = require('chai'); const dotenv = require('dotenv'); -const path = require('path'); -const truffleAssert = require('truffle-assertions'); const Environment = require('./harness'); @@ -13,8 +9,6 @@ const ACE = artifacts.require('@aztec/protocol/contracts/ACE/ACE.sol'); const ERC20Mintable = artifacts.require('@aztec/protocol/contracts/ERC20/ERC20Mintable.sol'); const ZkAssetOwnable = artifacts.require('@aztec/protocol/contracts/ERC1724/ZkAssetOwnable.sol'); -const extensionPath = path.resolve(__dirname + '/../client'); - dotenv.config(); function randomInt(from, to = null) { @@ -23,7 +17,7 @@ function randomInt(from, to = null) { return start + Math.floor(Math.random() * (offset + 1)); } -contract.skip('Extension', (accounts) => { +contract('Extension', (accounts) => { const [user] = accounts; const totalBalance = 10000; let environment; @@ -36,7 +30,7 @@ contract.skip('Extension', (accounts) => { await zkAsset.setProofs(1, 17); await erc20.mint(user, totalBalance); await erc20.approve(ace.address, totalBalance); - environment = await Environment.init(extensionPath, { debug: true, observeTime: 0 }); + environment = await Environment.init({ debug: false, observeTime: 0 }); }); after(async () => { @@ -45,14 +39,13 @@ contract.skip('Extension', (accounts) => { it.only('should successfully create an AZTEC account', async () => { await environment.createAccount(); + const homepage = await environment.getPage(target => target.url().match(/localhost/)); + await homepage.api.reload(); - const extensionPage = await environment.openExtension(); - const header = await extensionPage.api.waitForXPath("//div[contains(., 'My Assets')]"); - expect(header).to.not.equal(undefined); - await extensionPage.close(); + await new Promise(resolve => homepage.initialiseAztec(resolve)); }); - it.only('should set an AZTEC asset', async () => { + it('should set an AZTEC asset', async () => { const homepage = Object.values(environment.openPages) .find(p => p.aztecContext === true); @@ -65,7 +58,7 @@ contract.skip('Extension', (accounts) => { expect(erc20Balance).to.equal(totalBalance); }); - it.only('should complete a deposit', async () => { + it('should complete a deposit', async () => { /// DEPOSIT const homepage = Object.values(environment.openPages) .find(p => p.aztecContext === true); @@ -98,7 +91,7 @@ contract.skip('Extension', (accounts) => { const bal = await newPage.api.evaluate(async (address) => await (await window.aztec.asset(address)).balance(), zkAsset.address); }); - it.only('should complete a withdraw', async () => { + it('should complete a withdraw', async () => { /// WITHDRAW const withdrawAmount = randomInt(1, depositAmount); await newPage.api.evaluate(async (address, withdrawAmount, senderAddress, recipientAddress) => { diff --git a/packages/extension/test/SyncBenchmark.js b/packages/extension/test/SyncBenchmark.js deleted file mode 100644 index 7e201f67d..000000000 --- a/packages/extension/test/SyncBenchmark.js +++ /dev/null @@ -1,90 +0,0 @@ -/* global artifacts, expect, contract, beforeEach, it:true */ - -// ### External Dependencies -const { expect } = require('chai'); -const dotenv = require('dotenv'); -const path = require('path'); -const { - performance, -} = require('perf_hooks'); - -const Environment = require('./harness'); - -const extensionPath = path.resolve(__dirname + '/../client'); -const dotenvFile = path.resolve(__dirname + '/../.env.development'); - -dotenv.config({ path: dotenvFile }); - -function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - - -contract.only('SyncBenchmark', (accounts) => { - const seedPhrease = process.env.RINKEBY_TESTING_ACCOUNT_0_AZTEC_SEED_PHRASE; - const assetAddress = '0xae5fEB559F4486730333cabFaa407A9e10c0E874'; - const assetBalance = 10; - - let environment; - before(async () => { - environment = await Environment.init(extensionPath, { - debug: true, - observeTime: 0, - network: 'Rinkeby', - }); - }); - - after(async () => { - await environment.browser.close(); - }); - - it.only('should successfully restore existing AZTEC account', async () => { - await environment.restoreAccount(seedPhrease); - - const homepage = Object.values(environment.openPages) - .find(p => p.aztecContext === true); - - const backgroundPageTarget = await environment.getExtensionBackground(); - const bgPage = await backgroundPageTarget.page(); - bgPage.on('console', msg => console.log(`New message in the console: ${msg.text()}`)); - - const tStart = performance.now(); - let t0 = tStart; - let t1; - - // some bug we need use `enable` twice after restoring (start syncing into indexedDB) - await homepage.api.evaluate(async () => window.aztec.enable()); - const balance = await homepage.api.evaluate(async address => (await window.aztec.asset(address)).balance(), assetAddress); - expect(balance).to.equal(0); - await environment.newLog(bgPage, 'Finished pulling notes'); - t1 = performance.now(); - - console.log(`Syncing notes with syncNotes took: ${((t1 - t0) / 1000)} seconds.`); - - // some bug we need use `enable` once more - await homepage.api.evaluate(async () => window.aztec.enable()); - - t0 = performance.now(); - const balanceAfter = await homepage.api.evaluate(async address => (await window.aztec.asset(address)).balance(), assetAddress); - console.log(`balanceAfter: ${balanceAfter}`); - t1 = performance.now(); - - console.log(`Syncing notes and decryption with NoteService took: ${((t1 - t0) / 1000)} seconds.`); - - await sleep(5000000); - }); - - it.only('should sync an AZTEC asset', async () => { - // await environment.syncAsset(assetAddress); - - // console.log('----------- 0 '); - // const homepage = Object.values(environment.openPages) - // .find(p => p.aztecContext === true); - // console.log('----------- 1 '); - - // const asset = await homepage.api.evaluate(async (address) => await window.aztec.asset(address), assetAddress); - // console.log('----------- 2 '); - // expect(asset.address).to.equal(assetAddress); - }); - -}); \ No newline at end of file diff --git a/packages/extension/test/harness/index.html b/packages/extension/test/harness/index.html new file mode 100644 index 000000000..a474a1630 --- /dev/null +++ b/packages/extension/test/harness/index.html @@ -0,0 +1,10 @@ + + + + + AZTEC test + + + + + \ No newline at end of file diff --git a/packages/extension/test/harness/index.js b/packages/extension/test/harness/index.js index b8c4134a6..7d12b65fb 100644 --- a/packages/extension/test/harness/index.js +++ b/packages/extension/test/harness/index.js @@ -1,17 +1,21 @@ +/* eslint-disable no-underscore-dangle */ const puppeteer = require('puppeteer'); const path = require('path'); +const fs = require('fs'); const scenarios = require('./scenarios'); const steps = require('./steps'); const Metamask = require('./metamask'); -async function init(extensionPath, { - metamaskPath = path.resolve(__dirname + '/metamask-extension/'), +// open html page in pupeteer which loads sdk +// step through sign up and tx + +async function init({ + metamaskPath = path.resolve(path.join(__dirname, '/metamask-extension/')), metamaskMnemonic = process.env.GANACHE_TESTING_ACCOUNT_0_MNEMONIC, - extensionName = "AZTEC", network = 'Localhost', - extensionHomePage = 'pages/defaultPopup.html', - screenshotPath = path.resolve(__dirname + '/screenshots'), + popupFrameName = 'AZTECSDK-POPUP', + screenshotPath = path.resolve(path.join(__dirname, '/screenshots')), debug = false, observeTime = 0, } = {}) { @@ -21,48 +25,35 @@ async function init(extensionPath, { metamaskInit: Metamask, metadata: {}, openPages: {}, + popupFrameName, debug, screenshotPath, observeTime, ...steps, ...scenarios, - clean: async function() { - return Promise.all(Object.values(this.openPages).map(async page => page.close())) + clean: async function clean() { + return Promise.all(Object.values(this.openPages).map(async page => page.close())); }, }; - environment.extensionName = extensionName; environment.browser = await puppeteer.launch({ defaultViewport: null, - devtools: true, - slowMo: 0, + devtools: debug, + slowMo: observeTime, headless: false, // extension are allowed only in head-full mode args: [ - `--disable-extensions-except=${extensionPath},${metamaskPath}`, - `--load-extension=${extensionPath},${metamaskPath}`, - // '--disable-dev-shm-usage' - ] + `--disable-extensions-except=${metamaskPath}`, + `--load-extension=${metamaskPath}`, + ], }); await environment.metamaskInit(); await environment.metamask.signup(metamaskMnemonic); await environment.metamask.selectNetwork(network); - const extensionBackgroundTarget = await environment.getExtensionBackground(); - const extensionUrl = extensionBackgroundTarget._targetInfo.url || ''; - const [,, extensionID] = extensionUrl.split('/'); - - const extensionLink = `chrome-extension://${extensionID}/${extensionHomePage}`; - environment.metadata = { - url: extensionUrl, - id: extensionID, - link: extensionLink, - network, - }; - return environment; } module.exports = { - init -}; \ No newline at end of file + init, +}; diff --git a/packages/extension/test/harness/metamask-extension/_locales/am/messages.json b/packages/extension/test/harness/metamask-extension/_locales/am/messages.json index b122b754c..08b237aa0 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/am/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/am/messages.json @@ -1344,7 +1344,7 @@ "updatedWithDate": { "message": "የዘመነ $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs አግባብነት ያለው የ HTTP/HTTPS ቅድመ ቅጥያ ይፈልጋል።" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ar/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ar/messages.json index 5d21df192..18b9eafa2 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ar/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ar/messages.json @@ -1340,7 +1340,7 @@ "updatedWithDate": { "message": "تم تحديث $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "تتطلب الروابط بادئة HTTP/HTTPS مناسبة." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/bg/messages.json b/packages/extension/test/harness/metamask-extension/_locales/bg/messages.json index d5ca6f5cb..799214110 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/bg/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/bg/messages.json @@ -1343,7 +1343,7 @@ "updatedWithDate": { "message": "Актуализирано $1 " }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI изискват съответния HTTP / HTTPS префикс." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/bn/messages.json b/packages/extension/test/harness/metamask-extension/_locales/bn/messages.json index 3e7e44e2f..de1c0b6da 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/bn/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/bn/messages.json @@ -1347,7 +1347,7 @@ "updatedWithDate": { "message": "আপডেট করা $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI গুলির যথাযথ HTTP/HTTPS প্রেফিক্সের প্রয়োজন।" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ca/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ca/messages.json index a31e42357..599cb84ad 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ca/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ca/messages.json @@ -1316,7 +1316,7 @@ "updatedWithDate": { "message": "Actualitzat $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Els URIs requereixen el prefix HTTP/HTTPS apropiat." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/cs/messages.json b/packages/extension/test/harness/metamask-extension/_locales/cs/messages.json index e3c67c300..cd768d4d8 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/cs/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/cs/messages.json @@ -529,7 +529,7 @@ "unknownNetwork": { "message": "Neznámá soukromá síť" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI vyžadují korektní HTTP/HTTPS prefix." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/da/messages.json b/packages/extension/test/harness/metamask-extension/_locales/da/messages.json index 1c05509c8..5a2c3c100 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/da/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/da/messages.json @@ -1313,7 +1313,7 @@ "updatedWithDate": { "message": "Opdaterede $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Links kræver det rette HTTP/HTTPS-præfix." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/de/messages.json b/packages/extension/test/harness/metamask-extension/_locales/de/messages.json index 79683988b..5f241ab05 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/de/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/de/messages.json @@ -1304,7 +1304,7 @@ "updatedWithDate": { "message": "$1 aktualisiert" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs benötigen die korrekten HTTP/HTTPS Präfixe." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/el/messages.json b/packages/extension/test/harness/metamask-extension/_locales/el/messages.json index 860c5a563..126b9133f 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/el/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/el/messages.json @@ -1341,7 +1341,7 @@ "updatedWithDate": { "message": "Ενημερώθηκε το $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Τα URI απαιτούν το κατάλληλο πρόθεμα HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/en/messages.json b/packages/extension/test/harness/metamask-extension/_locales/en/messages.json index 3e83f7daf..c9e1b02db 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/en/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/en/messages.json @@ -1,4 +1,13 @@ { + "migrateSai": { + "message": "A message from Maker: The new Multi-Collateral Dai token has been released. Your old tokens are now called Sai. Please upgrade your Sai tokens to the new Dai." + }, + "migrateSaiInfo": { + "message": "To dismiss this notification you can migrate your tokens or hide SAI from the token list." + }, + "migrate": { + "message": "Migrate" + }, "showIncomingTransactions": { "message": "Show Incoming Transactions" }, @@ -56,6 +65,10 @@ "acceleratingATransaction": { "message": "* Accelerating a transaction by using a higher gas price increases its chances of getting processed by the network faster, but it is not always guaranteed." }, + "accessAndSpendNotice": { + "message": "$1 may access and spend up to this max amount", + "description": "$1 is the url of the site requesting ability to spend" + }, "accessingYourCamera": { "message": "Accessing your camera..." }, @@ -113,9 +126,20 @@ "addAcquiredTokens": { "message": "Add the tokens you've acquired using MetaMask" }, + "allowOriginSpendToken": { + "message": "Allow $1 to spend your $2?", + "description": "$1 is the url of the site and $2 is the symbol of the token they are requesting to spend" + }, + "allowWithdrawAndSpend": { + "message": "Allow $1 to withdraw and spend up to the following amount:", + "description": "The url of the site that requested permission to 'withdraw and spend'" + }, "amount": { "message": "Amount" }, + "amountWithColon": { + "message": "Amount:" + }, "appDescription": { "message": "An Ethereum Wallet in your Browser", "description": "The description of the application" @@ -384,6 +408,9 @@ "customRPC": { "message": "Custom RPC" }, + "customSpendLimit": { + "message": "Custom Spend Limit" + }, "dataBackupFoundInfo": { "message": "Some of your account data was backed up during a previous installation of MetaMask. This could include your settings, contacts and tokens. Would you like to restore this data now?" }, @@ -444,6 +471,9 @@ "editContact": { "message": "Edit Contact" }, + "editPermission": { + "message": "Edit Permission" + }, "emailUs": { "message": "Email us!" }, @@ -486,6 +516,9 @@ "enterAnAlias": { "message": "Enter an alias" }, + "enterMaxSpendLimit": { + "message": "Enter Max Spend Limit" + }, "enterPassword": { "message": "Enter password" }, @@ -516,6 +549,9 @@ "faster": { "message": "Faster" }, + "feeAssociatedRequest": { + "message": "A fee is associated with this request." + }, "fiat": { "message": "Fiat", "description": "Exchange type" @@ -533,6 +569,9 @@ "fromShapeShift": { "message": "From ShapeShift" }, + "functionApprove": { + "message": "Function: Approve" + }, "functionType": { "message": "Function Type" }, @@ -741,6 +780,9 @@ "logout": { "message": "Log out" }, + "logoutTimeTooGreat": { + "message": "Logout time is too great" + }, "mainnet": { "message": "Main Ethereum Network" }, @@ -950,6 +992,9 @@ "privateNetwork": { "message": "Private Network" }, + "proposedApprovalLimit": { + "message": "Proposed Approval Limit" + }, "qrCode": { "message": "Show QR Code" }, @@ -1185,6 +1230,9 @@ "signatureRequest": { "message": "Signature Request" }, + "signatureRequest1": { + "message": "Message" + }, "signed": { "message": "Signed" }, @@ -1206,9 +1254,25 @@ "speedUpTransaction": { "message": "Speed up this transaction" }, + "spendLimitPermission": { + "message": "Spend limit permission" + }, + "spendLimitRequestedBy": { + "message": "Spend limit requested by $1", + "description": "Origin of the site requesting the spend limit" + }, + "spendLimitTooLarge": { + "message": "Spend limit too large" + }, + "spendLimitInvalid": { + "message": "Spend limit invalid; must be a positive number" + }, "switchNetworks": { "message": "Switch Networks" }, + "stateLogFileName": { + "message": "MetaMask State Logs" + }, "stateLogs": { "message": "State Logs" }, @@ -1299,6 +1363,9 @@ "to": { "message": "To" }, + "toWithColon": { + "message": "To:" + }, "toETHviaShapeShift": { "message": "$1 to ETH via ShapeShift", "description": "system will fill in deposit type in start of message" @@ -1373,6 +1440,10 @@ "message": "We had trouble loading your token balances. You can view them ", "description": "Followed by a link (here) to view token balances" }, + "trustSiteApprovePermission": { + "message": "Do you trust this site? By granting this permission, you’re allowing $1 to withdraw your $2 and automate transactions for you.", + "description": "$1 is the url requesting permission and $2 is the symbol of the currency that the request is for" + }, "tryAgain": { "message": "Try again" }, @@ -1400,6 +1471,9 @@ "unknownCameraError": { "message": "There was an error while trying to access your camera. Please try again..." }, + "unlimited": { + "message": "Unlimited" + }, "unlock": { "message": "Unlock" }, @@ -1409,8 +1483,11 @@ "updatedWithDate": { "message": "Updated $1" }, - "uriErrorMsg": { - "message": "URIs require the appropriate HTTP/HTTPS prefix." + "urlErrorMsg": { + "message": "URLs require the appropriate HTTP/HTTPS prefix." + }, + "urlExistsErrorMsg": { + "message": "URL is already present in existing list of networks" }, "usedByClients": { "message": "Used by a variety of different clients" @@ -1436,6 +1513,9 @@ "viewOnEtherscan": { "message": "View on Etherscan" }, + "retryTransaction": { + "message": "Retry Transaction" + }, "visitWebSite": { "message": "Visit our web site" }, diff --git a/packages/extension/test/harness/metamask-extension/_locales/es/messages.json b/packages/extension/test/harness/metamask-extension/_locales/es/messages.json index 1462909d3..e503cd977 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/es/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/es/messages.json @@ -1091,7 +1091,7 @@ "updatedWithDate": { "message": "Actualizado $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI necesita el prefijo HTTP/HTTPS apropiado" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/es_419/messages.json b/packages/extension/test/harness/metamask-extension/_locales/es_419/messages.json index 244eff885..c861be81b 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/es_419/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/es_419/messages.json @@ -1326,7 +1326,7 @@ "updatedWithDate": { "message": "Actualización: $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Los URI deben tener el prefijo HTTP/HTTPS apropiado." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/et/messages.json b/packages/extension/test/harness/metamask-extension/_locales/et/messages.json index 79bc3ebd4..c779dff85 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/et/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/et/messages.json @@ -1337,7 +1337,7 @@ "updatedWithDate": { "message": "Värskendatud $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI-d nõuavad sobivat HTTP/HTTPS-i prefiksit." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/fa/messages.json b/packages/extension/test/harness/metamask-extension/_locales/fa/messages.json index 848341941..5e00dde11 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/fa/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/fa/messages.json @@ -1347,7 +1347,7 @@ "updatedWithDate": { "message": "بروزرسانی شد 1$1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URl ها نیازمند پیشوند مناسب HTTP/HTTPS اند." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/fi/messages.json b/packages/extension/test/harness/metamask-extension/_locales/fi/messages.json index a0a0ebfe2..df4f62a19 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/fi/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/fi/messages.json @@ -1344,7 +1344,7 @@ "updatedWithDate": { "message": "$1 päivitetty" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI:t vaativat asianmukaisen HTTP/HTTPS-etuliitteen." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/fil/messages.json b/packages/extension/test/harness/metamask-extension/_locales/fil/messages.json index b62df2909..d00726811 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/fil/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/fil/messages.json @@ -1235,7 +1235,7 @@ "updatedWithDate": { "message": "Na-update ang $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Kinakailangan ng mga URI ang naaangkop na HTTP/HTTPS prefix." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/fr/messages.json b/packages/extension/test/harness/metamask-extension/_locales/fr/messages.json index b39e6b361..98ae1576b 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/fr/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/fr/messages.json @@ -1308,7 +1308,7 @@ "updatedWithDate": { "message": "Mis à jour $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Les URLs requièrent un préfixe HTTP/HTTPS approprié." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/he/messages.json b/packages/extension/test/harness/metamask-extension/_locales/he/messages.json index 64bf6a0a5..41813baf2 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/he/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/he/messages.json @@ -1341,7 +1341,7 @@ "updatedWithDate": { "message": "עודכן $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "כתובות URI דורשות את קידומת HTTP/HTTPS המתאימה." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/hi/messages.json b/packages/extension/test/harness/metamask-extension/_locales/hi/messages.json index f434c93b1..19834411e 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/hi/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/hi/messages.json @@ -1341,7 +1341,7 @@ "updatedWithDate": { "message": "$1 अपडेट किया गया" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI को उपयुक्त HTTP/HTTPS प्रीफ़िक्स की आवश्यकता होती है।" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/hn/messages.json b/packages/extension/test/harness/metamask-extension/_locales/hn/messages.json index 471776b02..91d9bde7e 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/hn/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/hn/messages.json @@ -491,7 +491,7 @@ "unknownNetwork": { "message": "अज्ञात निजी नेटवर्क" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI-यूआरआई को उपयुक्त HTTP / HTTPS उपसर्ग की आवश्यकता होती है।" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/hr/messages.json b/packages/extension/test/harness/metamask-extension/_locales/hr/messages.json index f022f2f80..ba64748c2 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/hr/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/hr/messages.json @@ -1337,7 +1337,7 @@ "updatedWithDate": { "message": "Ažurirano $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI-jevima se zahtijeva prikladan prefiks HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ht/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ht/messages.json index 3150cb14c..d973aeef5 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ht/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ht/messages.json @@ -851,7 +851,7 @@ "updatedWithDate": { "message": "Mete ajou $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs mande pou apwopriye prefiks HTTP / HTTPS a." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/hu/messages.json b/packages/extension/test/harness/metamask-extension/_locales/hu/messages.json index 15a03716a..542534f32 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/hu/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/hu/messages.json @@ -1337,7 +1337,7 @@ "updatedWithDate": { "message": "$1 frissítve" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Az URI-hez szükség van a megfelelő HTTP/HTTPS előtagra." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/id/messages.json b/packages/extension/test/harness/metamask-extension/_locales/id/messages.json index f0d55ea8a..252b7ec9f 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/id/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/id/messages.json @@ -1316,7 +1316,7 @@ "updatedWithDate": { "message": "Diperbarui $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI memerlukan awalan HTTP/HTTPS yang sesuai." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/it/messages.json b/packages/extension/test/harness/metamask-extension/_locales/it/messages.json index 57d0c6958..1d0725183 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/it/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/it/messages.json @@ -1307,7 +1307,7 @@ "updatedWithDate": { "message": "Aggiornata $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Gli URI richiedono un prefisso HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/kn/messages.json b/packages/extension/test/harness/metamask-extension/_locales/kn/messages.json index b99bf69d7..7fc114988 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/kn/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/kn/messages.json @@ -1347,7 +1347,7 @@ "updatedWithDate": { "message": "$1 ನವೀಕರಿಸಲಾಗಿದೆ" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI ಗಳಿಗೆ ಸೂಕ್ತವಾದ HTTP/HTTPS ಪೂರ್ವಪ್ರತ್ಯಯದ ಅಗತ್ಯವಿದೆ." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ko/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ko/messages.json index 17b327bab..c71e3c267 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ko/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ko/messages.json @@ -1338,7 +1338,7 @@ "updatedWithDate": { "message": "$1에 업데이트 됨" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI는 HTTP/HTTPS로 시작해야 합니다." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/lt/messages.json b/packages/extension/test/harness/metamask-extension/_locales/lt/messages.json index 36e8f52dd..7e029494f 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/lt/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/lt/messages.json @@ -1347,7 +1347,7 @@ "updatedWithDate": { "message": "Atnaujinta $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI reikia atitinkamo HTTP/HTTPS priešdėlio." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/lv/messages.json b/packages/extension/test/harness/metamask-extension/_locales/lv/messages.json index 6261816be..ace47600f 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/lv/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/lv/messages.json @@ -1343,7 +1343,7 @@ "updatedWithDate": { "message": "Atjaunināts $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI jāsākas ar atbilstošo HTTP/HTTPS priedēkli." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ms/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ms/messages.json index e6227f619..03f9ac0b2 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ms/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ms/messages.json @@ -1315,7 +1315,7 @@ "updatedWithDate": { "message": "Dikemaskini $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI memerlukan awalan HTTP/HTTPS yang sesuai." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/nl/messages.json b/packages/extension/test/harness/metamask-extension/_locales/nl/messages.json index 9e5aed56a..ba83e37a1 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/nl/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/nl/messages.json @@ -478,7 +478,7 @@ "unknownNetwork": { "message": "Onbekend privénetwerk" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Voor URI's is het juiste HTTP / HTTPS-voorvoegsel vereist." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/no/messages.json b/packages/extension/test/harness/metamask-extension/_locales/no/messages.json index 51f21abee..83a6f09d3 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/no/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/no/messages.json @@ -1319,7 +1319,7 @@ "updatedWithDate": { "message": "Oppdatert $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI-er krever det aktuelle HTTP/HTTPS-prefikset." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/pl/messages.json b/packages/extension/test/harness/metamask-extension/_locales/pl/messages.json index 47923983d..5ffd5585a 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/pl/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/pl/messages.json @@ -1332,7 +1332,7 @@ "updatedWithDate": { "message": "Zaktualizowano $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI wymaga prawidłowego prefiksu HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/pt/messages.json b/packages/extension/test/harness/metamask-extension/_locales/pt/messages.json index 5f1d914d5..70c2e52ae 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/pt/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/pt/messages.json @@ -488,7 +488,7 @@ "unknownNetwork": { "message": "Rede Privada Desconhecida" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Links requerem o prefixo HTTP/HTTPS apropriado." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/pt_BR/messages.json b/packages/extension/test/harness/metamask-extension/_locales/pt_BR/messages.json index 0b6963d02..ecb223dcb 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/pt_BR/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/pt_BR/messages.json @@ -1326,7 +1326,7 @@ "updatedWithDate": { "message": "$1 atualizado" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs exigem o devido prefixo HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ro/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ro/messages.json index 5d81811e9..5fed700da 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ro/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ro/messages.json @@ -1328,7 +1328,7 @@ "updatedWithDate": { "message": "Actualizat $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URL necesită prefixul potrivit HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ru/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ru/messages.json index 328127903..082e450da 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ru/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ru/messages.json @@ -542,7 +542,7 @@ "unknownNetwork": { "message": "Неизвестная частная сеть" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "Для URI требуется соответствующий префикс HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/sk/messages.json b/packages/extension/test/harness/metamask-extension/_locales/sk/messages.json index a525b522e..697c58936 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/sk/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/sk/messages.json @@ -1301,7 +1301,7 @@ "updatedWithDate": { "message": "Aktualizované $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI vyžadují korektní HTTP/HTTPS prefix." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/sl/messages.json b/packages/extension/test/harness/metamask-extension/_locales/sl/messages.json index e617d7997..643e62c23 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/sl/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/sl/messages.json @@ -1329,7 +1329,7 @@ "updatedWithDate": { "message": "Posodobljeno $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI zahtevajo ustrezno HTTP/HTTPS predpono." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/sr/messages.json b/packages/extension/test/harness/metamask-extension/_locales/sr/messages.json index 01056d9e3..1cd653ed7 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/sr/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/sr/messages.json @@ -1332,7 +1332,7 @@ "updatedWithDate": { "message": "Ažuriran $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI-ovi zahtevaju odgovarajući prefiks HTTP / HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/sv/messages.json b/packages/extension/test/harness/metamask-extension/_locales/sv/messages.json index 67a9fb94b..6d89b6e5c 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/sv/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/sv/messages.json @@ -1322,7 +1322,7 @@ "updatedWithDate": { "message": "Uppdaterat $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI:er kräver lämpligt HTTP/HTTPS-prefix." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/sw/messages.json b/packages/extension/test/harness/metamask-extension/_locales/sw/messages.json index 40aec5547..76d1897ac 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/sw/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/sw/messages.json @@ -1325,7 +1325,7 @@ "updatedWithDate": { "message": "Imesasishwa $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI huhitaji kiambishi sahihi cha HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/ta/messages.json b/packages/extension/test/harness/metamask-extension/_locales/ta/messages.json index b577fe695..b5be67520 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/ta/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/ta/messages.json @@ -554,7 +554,7 @@ "unknownNetwork": { "message": "அறியப்படாத தனியார் நெட்வொர்க்" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI கள் சரியான HTTP / HTTPS முன்னொட்டு தேவை." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/th/messages.json b/packages/extension/test/harness/metamask-extension/_locales/th/messages.json index 5f852a932..f5fcf3edf 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/th/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/th/messages.json @@ -656,7 +656,7 @@ "updatedWithDate": { "message": "อัปเดต $1 แล้ว" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URI ต้องมีคำนำหน้าเป็น HTTP หรือ HTTPS" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/tr/messages.json b/packages/extension/test/harness/metamask-extension/_locales/tr/messages.json index dc7ca718f..fe2332f2f 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/tr/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/tr/messages.json @@ -547,7 +547,7 @@ "unknownNetwork": { "message": "Bilinmeyen özel ağ" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIler için HTTP/HTTPS öneki gerekmektedir." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/uk/messages.json b/packages/extension/test/harness/metamask-extension/_locales/uk/messages.json index 61be52fbe..d269044b3 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/uk/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/uk/messages.json @@ -1347,7 +1347,7 @@ "updatedWithDate": { "message": "Оновлено $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs вимагають відповідного префікса HTTP/HTTPS." }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/_locales/zh_TW/messages.json b/packages/extension/test/harness/metamask-extension/_locales/zh_TW/messages.json index e9cb4523e..501272799 100644 --- a/packages/extension/test/harness/metamask-extension/_locales/zh_TW/messages.json +++ b/packages/extension/test/harness/metamask-extension/_locales/zh_TW/messages.json @@ -162,7 +162,7 @@ "description": "helper for inputting hex as decimal input" }, "blockExplorerUrl": { - "message": "封鎖 Explorer" + "message": "區塊鏈瀏覽器" }, "blockExplorerView": { "message": "在 $1 觀看帳號 ", @@ -199,7 +199,7 @@ "message": "開啟" }, "optionalBlockExplorerUrl": { - "message": "封鎖 Explorer URL(非必要)" + "message": "區塊鏈瀏覽器 URL(非必要)" }, "cancel": { "message": "取消" @@ -641,7 +641,7 @@ "message": "無效的 RPC URI" }, "invalidBlockExplorerURL": { - "message": "無效的 Block Explorer URI" + "message": "無效的區塊鏈瀏覽器 URL" }, "invalidSeedPhrase": { "message": "無效的助憶詞" @@ -1320,7 +1320,7 @@ "updatedWithDate": { "message": "更新時間 $1" }, - "uriErrorMsg": { + "urlErrorMsg": { "message": "URIs 需要加入適當的 HTTP/HTTPS 前綴字" }, "usedByClients": { diff --git a/packages/extension/test/harness/metamask-extension/background.js b/packages/extension/test/harness/metamask-extension/background.js index 2dff98f33..0a63f1617 100644 --- a/packages/extension/test/harness/metamask-extension/background.js +++ b/packages/extension/test/harness/metamask-extension/background.js @@ -1,2 +1,2 @@ -!function e(t,r,n){function i(a,s){if(!r[a]){if(!t[a]){var c="function"==typeof require&&require;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var f=r[a]={exports:{}};t[a][0].call(f.exports,(function(e){return i(t[a][1][e]||e)}),f,f.exports,e,t,r,n)}return r[a].exports}for(var o="function"==typeof require&&require,a=0;a{if(!e)throw new Error("Cannot import an empty key.");const t=o.addHexPrefix(e),r=o.toBuffer(t);if(!o.isValidPrivate(r))throw new Error("Cannot import invalid private key.");return o.stripHexPrefix(t)},"JSON File":(e,t)=>{let r;try{r=i.fromEtherWallet(e,t)}catch(e){console.log("Attempt to import as EtherWallet format failed, trying V3...")}return r||(r=n.fromV3(e,t,!0)),function(e){const t=e.getPrivateKey();return o.bufferToHex(t)}(r)}}};t.exports=a},{"ethereumjs-util":555,"ethereumjs-wallet":558,"ethereumjs-wallet/thirdparty":568}],4:[function(e,t,r){(function(t,r){"use strict";e("abortcontroller-polyfill/dist/polyfill-patch-fetch"),e("./lib/setupFetchDebugging")();const n=e("url"),i=e("end-of-stream"),o=e("pump"),a=e("debounce-stream"),s=e("loglevel"),c=e("extensionizer"),u=e("./lib/local-store"),f=e("obs-store/lib/transform"),l=e("obs-store/lib/asStream"),h=e("./platforms/extension"),d=e("./lib/migrator/"),p=e("./migrations/"),m=e("extension-port-stream"),y=e("./lib/createStreamSink"),g=e("./lib/notification-manager.js"),b=e("./metamask-controller"),v=e("./first-time-state"),w=e("./lib/setupSentry"),x=e("./lib/reportFailedTxToSentry"),_=e("./lib/setupMetamaskMeshMetrics"),k=e("./edge-encryptor"),S=e("./lib/get-first-preferred-lang-code"),E=e("./lib/getObjStructure"),A=e("./lib/ens-ipfs/setup"),{ENVIRONMENT_TYPE_POPUP:T,ENVIRONMENT_TYPE_NOTIFICATION:C,ENVIRONMENT_TYPE_FULLSCREEN:j}=e("./lib/enums"),M=Object.assign({},v,r.METAMASK_TEST_CONFIG),B=t.env.METAMASK_DEBUG;s.setDefaultLevel(t.env.METAMASK_DEBUG?"debug":"warn");const O=new h,P=new g;r.METAMASK_NOTIFIER=P;const I=w({release:O.getVersion()}),N=!!!document.documentMode&&!!window.StyleMedia;let D=!1,R=!1;const L={},U=new u;let F;(async function(){const e=await async function(){const e=new d({migrations:p});(F=await U.get()||e.generateInitialState(M))&&!F.data&&(F=e.generateInitialState(M),I.captureMessage("MetaMask - Empty vault found - unable to recover"));if(e.on("error",e=>{const t=E(F);I.captureException(e,{extra:{vaultStructure:t}})}),!(F=await e.migrateData(F)))throw new Error("MetaMask - migrator returned undefined");U.isSupported?U.set(F):setTimeout(()=>{throw new Error("MetaMask - Localstore not supported")});return F.data}(),t=await S();await function(e,t){const{ABTestController:r={}}=e,{abTests:u={}}=r,h=new b({showUnconfirmedMessage:q,showUnapprovedTx:"fullScreen"===u.fullScreenVsPopup?H:q,openPopup:K,closePopup:P.closePopup.bind(P),initState:e,initLangCode:t,platform:O,encryptor:N?new k:void 0}),d=h.provider;A({provider:d}),h.networkController.on("rpc-req",e=>{z({type:"rpc",data:e})}),h.txController.on("tx:status-update",(e,t)=>{if("failed"!==t)return;const r=h.txController.txStateManager.getTx(e);try{x({sentry:I,txMeta:r})}catch(e){console.error(e)}}),o(l(h.store),a(1e3),f((function(e){return F.data=e,F})),y((async function(e){if(!e)throw new Error("MetaMask - updated state is missing",e);if(!e.data)throw new Error("MetaMask - updated state does not have data",e);if(U.isSupported)try{await U.set(e)}catch(e){s.error("error setting state in local store:",e)}})),e=>{s.error("MetaMask - Persistence pipeline failed",e)}),c.runtime.onConnect.addListener((function(e){const t=e.name,r=p[t];if(g.includes(e.name))return!1;if(r){const r=new m(e);if(h.isClientOpen=!0,h.setupTrustedCommunication(r,"MetaMask"),t===T&&(D=!0,i(r,()=>{D=!1,h.isClientOpen=v()})),t===C&&(R=!0,i(r,()=>{R=!1,h.isClientOpen=v()})),t===j){const t=e.sender.tab.id;L[t]=!0,i(r,()=>{delete L[t],h.isClientOpen=v()})}}else w(e)})),c.runtime.onConnectExternal.addListener(w);const p={[T]:!0,[C]:!0,[j]:!0},g=["trezor-connect"],v=()=>D||Boolean(Object.keys(L).length)||R;function w(e){const t=n.parse(e.sender.url).hostname,r=new m(e);h.setupUntrustedCommunication(r,t)}function _(){let e="";const t=h.txController.getUnapprovedTxCount()+h.messageManager.unapprovedMsgCount+h.personalMessageManager.unapprovedPersonalMsgCount+h.typedMessageManager.unapprovedTypedMessagesCount+h.providerApprovalController.memStore.getState().providerRequests.length;t&&(e=String(t)),c.browserAction.setBadgeText({text:e}),c.browserAction.setBadgeBackgroundColor({color:"#506F8B"})}return _(),h.txController.on("update:badge",_),h.messageManager.on("updateBadge",_),h.personalMessageManager.on("updateBadge",_),h.typedMessageManager.on("updateBadge",_),h.providerApprovalController.memStore.on("update",_),Promise.resolve()}(e,t),s.debug("MetaMask initialization complete.")})().catch(s.error);const{submitMeshMetricsEntry:z}=_();function q(){c.tabs.query({active:!0},e=>{const t=Boolean(e.find(e=>L[e.id]));D||t||R||(P.showPopup(),R=!0)})}function H(){const e=Object.keys(L);e.length?c.tabs.update(parseInt(e[0],10),{active:!0},()=>{c.tabs.reload(parseInt(e[0],10))}):O.openExtensionInBrowser()}function K(){return q(),new Promise(e=>{const t=setInterval(()=>{R||(clearInterval(t),e())},1e3)})}c.runtime.onInstalled.addListener(({reason:e})=>{"install"!==e||B||O.openExtensionInBrowser()})}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./edge-encryptor":34,"./first-time-state":35,"./lib/createStreamSink":44,"./lib/ens-ipfs/setup":48,"./lib/enums":49,"./lib/get-first-preferred-lang-code":52,"./lib/getObjStructure":53,"./lib/local-store":55,"./lib/migrator/":57,"./lib/notification-manager.js":59,"./lib/reportFailedTxToSentry":62,"./lib/setupFetchDebugging":65,"./lib/setupMetamaskMeshMetrics":66,"./lib/setupSentry":67,"./metamask-controller":71,"./migrations/":110,"./platforms/extension":111,_process:898,"abortcontroller-polyfill/dist/polyfill-patch-fetch":200,"debounce-stream":420,"end-of-stream":461,"extension-port-stream":593,extensionizer:608,loglevel:827,"obs-store/lib/asStream":845,"obs-store/lib/transform":847,pump:908,url:1356}],5:[function(e,t,r){"use strict";const n=e("obs-store"),i=e("xtend"),{getRandomArrayItem:o}=e("../lib/util");class a{constructor(e={}){const{initState:t}=e;this.store=new n(i({abTests:{fullScreenVsPopup:this._getRandomizedTestGroupName("fullScreenVsPopup")}},t))}getAssignedABTestGroupName(e){return this.store.getState().abTests[e]}_getRandomizedTestGroupName(e){const t=a.abTestGroupNames[e];return o(t)}}a.abTestGroupNames={fullScreenVsPopup:["control","fullScreen"]},t.exports=a},{"../lib/util":70,"obs-store":844,xtend:1430}],6:[function(e,t,r){"use strict";const n=e("obs-store"),i=e("xtend");t.exports=class{constructor(e={}){const{initState:t,onInactiveTimeout:r,preferencesStore:o}=e,{preferences:a}=o.getState();this.onInactiveTimeout=r||(()=>{}),this.store=new n(i({timeoutMinutes:0},t)),this.timer=null,o.subscribe(e=>{this._setInactiveTimeout(e.preferences.autoLogoutTimeLimit)}),this._setInactiveTimeout(a.autoLogoutTimeLimit)}setLastActiveTime(){this._resetTimer()}_setInactiveTimeout(e){this.store.putState({timeoutMinutes:e}),this._resetTimer()}_resetTimer(){const{timeoutMinutes:e}=this.store.getState();this.timer&&clearTimeout(this.timer),e&&(this.timer=setTimeout(()=>this.onInactiveTimeout(),60*e*1e3))}}},{"obs-store":844,xtend:1430}],7:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t{const r=e[t];r.balance&&(n[t]=r.balance)}),o({},r,{[t]:n})}_registerUpdates(){const e=this.updateCachedBalances.bind(this);this.accountTracker.store.subscribe(e)}}},{"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"obs-store":844,xtend:1430}],8:[function(e,t,r){"use strict";const n=e("web3"),i=e("eth-contract-metadata"),{warn:o}=e("loglevel"),{MAINNET:a}=e("./network/enums"),s=18e4,c=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:!1,type:"function"}],u=e("single-call-balance-checker-abi"),f="0xb1f8e55c7f64d203c1400b9d8555d050f94adf39";t.exports=class{constructor({interval:e=s,preferences:t,network:r,keyringMemStore:n}={}){this.preferences=t,this.interval=e,this.network=r,this.keyringMemStore=n}async detectNewTokens(){if(!this.isActive)return;if(this._network.store.getState().provider.type!==a)return;const e=[];this.web3.setProvider(this._network._provider);for(const t in i)i[t].erc20&&!this.tokenAddresses.includes(t.toLowerCase())&&e.push(t);this.web3.eth.contract(u).at(f).balances([this.selectedAddress],e,(t,r)=>{t?o("MetaMask - DetectTokensController single call balance fetch failed",t):e.forEach((e,t)=>{const n=r[t];n&&!n.isZero()&&this._preferences.addToken(e,i[e].symbol,i[e].decimals)})})}async detectTokenBalance(e){this.web3.eth.contract(c).at(e).balanceOf(this.selectedAddress,(t,r)=>{t?o(`MetaMask - DetectTokensController balance fetch failed for ${e}.`,t):r.isZero()||this._preferences.addToken(e,i[e].symbol,i[e].decimals)})}restartTokenDetection(){this.isActive&&this.selectedAddress&&(this.detectNewTokens(),this.interval=s)}set interval(e){this._handle&&clearInterval(this._handle),e&&(this._handle=setInterval(()=>{this.detectNewTokens()},e))}set preferences(e){e&&(this._preferences=e,e.store.subscribe(({tokens:e=[]})=>{this.tokenAddresses=e.map(e=>e.address)}),e.store.subscribe(({selectedAddress:e})=>{this.selectedAddress!==e&&(this.selectedAddress=e,this.restartTokenDetection())}))}set network(e){e&&(this._network=e,this.web3=new n(e._provider))}set keyringMemStore(e){e&&(this._keyringMemStore=e,this._keyringMemStore.subscribe(({isUnlocked:e})=>{this.isUnlocked!==e&&(this.isUnlocked=e,e&&this.restartTokenDetection())}))}get isActive(){return this.isOpen&&this.isUnlocked}}},{"./network/enums":16,"eth-contract-metadata":465,loglevel:827,"single-call-balance-checker-abi":1290,web3:1371}],9:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=n(e("@babel/runtime/helpers/defineProperty")),o=n(e("../lib/fetch-with-timeout"));function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t{try{return r?(r=!1,e(n,n)):e(t,n)}finally{t=n}}}t.exports=class{constructor(e={}){const{blockTracker:t,networkController:r,preferencesController:n}=e;this.blockTracker=t,this.networkController=r,this.preferencesController=n,this.getCurrentNetwork=()=>r.getProviderConfig().type,this._onLatestBlock=async e=>{const t=this.preferencesController.getSelectedAddress(),r=parseInt(e,16);await this._update({address:t,newBlockNumberDec:r})};const i=Object.assign({incomingTransactions:{},incomingTxLastFetchedBlocksByNetwork:{[b]:null,[v]:null,[w]:null,[x]:null,[_]:null}},e.initState);this.store=new c(i),this.preferencesController.store.subscribe(E((e,t)=>{const{featureFlags:{showIncomingTransactions:r}={}}=e,{featureFlags:{showIncomingTransactions:n}={}}=t;n!==r&&(!r||n?this.start():this.stop())})),this.preferencesController.store.subscribe(E(async(e,t)=>{const{selectedAddress:r}=e,{selectedAddress:n}=t;n!==r&&await this._update({address:n})})),this.networkController.on("networkDidChange",async e=>{const t=this.preferencesController.getSelectedAddress();await this._update({address:t,networkType:e})})}start(){const{featureFlags:e={}}=this.preferencesController.store.getState(),{showIncomingTransactions:t}=e;t&&(this.blockTracker.removeListener("latest",this._onLatestBlock),this.blockTracker.addListener("latest",this._onLatestBlock))}stop(){this.blockTracker.removeListener("latest",this._onLatestBlock)}async _update({address:e,newBlockNumberDec:t,networkType:r}={}){try{const n=await this._getDataForUpdate({address:e,newBlockNumberDec:t,networkType:r});await this._updateStateWithNewTxData(n)}catch(e){u.error(e)}}async _getDataForUpdate({address:e,newBlockNumberDec:t,networkType:r}={}){const{incomingTransactions:n,incomingTxLastFetchedBlocksByNetwork:i}=this.store.getState(),o=r||this.getCurrentNetwork();let a=i[o]||t;void 0===a&&(a=parseInt(this.blockTracker.getCurrentBlock(),16));const{latestIncomingTxBlockNumber:s,txs:c}=await this._fetchAll(e,a,o);return{latestIncomingTxBlockNumber:s,newTxs:c,currentIncomingTxs:n,currentBlocksByNetwork:i,fetchedBlockNumber:a,network:o}}async _updateStateWithNewTxData({latestIncomingTxBlockNumber:e,newTxs:t,currentIncomingTxs:r,currentBlocksByNetwork:n,fetchedBlockNumber:i,network:o}){const a=e?parseInt(e,10)+1:i+1,c=s({},r);t.forEach(e=>{c[e.hash]=e}),this.store.updateState({incomingTxLastFetchedBlocksByNetwork:s({},n,{[o]:a}),incomingTransactions:c})}async _fetchAll(e,t,r){const n=await this._fetchTxs(e,t,r);return this._processTxFetchResponse(n)}async _fetchTxs(e,t,r){let n="api";const i=k[r];if(-1===[b,v,w,x,_].indexOf(r))return{};r!==_&&(n=`api-${r}`);let o=`${`https://${n}.etherscan.io`}/api?module=account&action=txlist&address=${e}&tag=latest&page=1`;t&&(o+=`&startBlock=${parseInt(t,10)}`);const a=await S(o);return s({},await a.json(),{address:e,currentNetworkID:i})}_processTxFetchResponse({status:e,result:t,address:r,currentNetworkID:n}){if("0"!==e&&t.length>0){const e={},i=[];t.forEach(t=>{e[t.hash]||(i.push(this._normalizeTxFromEtherscan(t,n)),e[t.hash]=1)});const o=i.filter(e=>e.txParams.to&&e.txParams.to.toLowerCase()===r.toLowerCase());o.sort((e,t)=>e.time{e.blockNumber&&(!a||parseInt(a,10){this.checkInfuraNetworkStatus().catch(o.warn)},a)}}},{loglevel:827,"obs-store":844,xtend:1430}],11:[function(e,t,r){"use strict";t.exports={SINGLE_CALL_BALANCES_ADDRESS:"0xb1f8e55c7f64d203c1400b9d8555d050f94adf39",SINGLE_CALL_BALANCES_ADDRESS_RINKEBY:"0x9f510b19f1ad66f0dcf6e45559fab0d6752c1db7",SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN:"0xb8e671734ce5c8d7dfbbea5574fa4cf39f7a54a4",SINGLE_CALL_BALANCES_ADDRESS_KOVAN:"0xb1d3fbb2f83aecd196f474c16ca5d9cffa0d0ffc"}},{}],12:[function(e,t,r){"use strict";const n=e("json-rpc-engine/src/mergeMiddleware"),i=e("json-rpc-engine/src/createScaffoldMiddleware"),o=e("eth-json-rpc-middleware/block-ref"),a=e("eth-json-rpc-middleware/retryOnEmpty"),s=e("eth-json-rpc-middleware/block-cache"),c=e("eth-json-rpc-middleware/inflight-cache"),u=e("eth-json-rpc-middleware/block-tracker-inspector"),f=e("eth-json-rpc-middleware/providerFromMiddleware"),l=e("eth-json-rpc-infura"),h=e("eth-block-tracker");function d({network:e}){let t,r;switch(e){case"mainnet":r="1",t="0x01";break;case"ropsten":r="3",t="0x03";break;case"rinkeby":r="4",t="0x04";break;case"kovan":r="42",t="0x2a";break;case"goerli":r="5",t="0x05";break;default:throw new Error(`createInfuraClient - unknown network "${e}"`)}return i({eth_chainId:t,net_version:r})}function p(e){return(t,r,n)=>{e(t),n()}}t.exports=function({network:e,onRequest:t}){const r=n([p(t),l({network:e,maxAttempts:5,source:"metamask"})]),i=f(r),m=new h({provider:i});return{networkMiddleware:n([d({network:e}),s({blockTracker:m}),c(),o({blockTracker:m,provider:i}),a({blockTracker:m,provider:i}),u({blockTracker:m}),r]),blockTracker:m}}},{"eth-block-tracker":463,"eth-json-rpc-infura":492,"eth-json-rpc-middleware/block-cache":493,"eth-json-rpc-middleware/block-ref":495,"eth-json-rpc-middleware/block-tracker-inspector":496,"eth-json-rpc-middleware/inflight-cache":499,"eth-json-rpc-middleware/providerFromMiddleware":513,"eth-json-rpc-middleware/retryOnEmpty":514,"json-rpc-engine/src/createScaffoldMiddleware":776,"json-rpc-engine/src/mergeMiddleware":778}],13:[function(e,t,r){"use strict";const n=e("json-rpc-engine/src/mergeMiddleware"),i=e("eth-json-rpc-middleware/fetch"),o=e("eth-json-rpc-middleware/block-ref-rewrite"),a=e("eth-json-rpc-middleware/block-cache"),s=e("eth-json-rpc-middleware/inflight-cache"),c=e("eth-json-rpc-middleware/block-tracker-inspector"),u=e("eth-json-rpc-middleware/providerFromMiddleware"),f=e("eth-block-tracker");t.exports=function({rpcUrl:e}){const t=i({rpcUrl:e}),r=u(t),l=new f({provider:r});return{networkMiddleware:n([o({blockTracker:l}),a({blockTracker:l}),s(),c({blockTracker:l}),t]),blockTracker:l}}},{"eth-block-tracker":463,"eth-json-rpc-middleware/block-cache":493,"eth-json-rpc-middleware/block-ref-rewrite":494,"eth-json-rpc-middleware/block-tracker-inspector":496,"eth-json-rpc-middleware/fetch":498,"eth-json-rpc-middleware/inflight-cache":499,"eth-json-rpc-middleware/providerFromMiddleware":513,"json-rpc-engine/src/mergeMiddleware":778}],14:[function(e,t,r){(function(r){"use strict";const n=e("json-rpc-engine/src/mergeMiddleware"),i=e("eth-json-rpc-middleware/fetch"),o=e("eth-json-rpc-middleware/block-ref-rewrite"),a=e("eth-json-rpc-middleware/block-tracker-inspector"),s=e("json-rpc-engine/src/createAsyncMiddleware"),c=e("eth-json-rpc-middleware/providerFromMiddleware"),u=e("eth-block-tracker"),f="true"===r.env.IN_TEST;t.exports=function(){const e=i({rpcUrl:"http://localhost:8545/"}),t=c(e),r=new u({provider:t,pollingInterval:1e3});return{networkMiddleware:n([s(async(e,t,r)=>("eth_estimateGas"===e.method&&f&&await function(e){return new Promise(t=>setTimeout(t,e))}(2e3),r())),o({blockTracker:r}),a({blockTracker:r}),e]),blockTracker:r}}}).call(this,e("_process"))},{_process:898,"eth-block-tracker":463,"eth-json-rpc-middleware/block-ref-rewrite":494,"eth-json-rpc-middleware/block-tracker-inspector":496,"eth-json-rpc-middleware/fetch":498,"eth-json-rpc-middleware/providerFromMiddleware":513,"json-rpc-engine/src/createAsyncMiddleware":775,"json-rpc-engine/src/mergeMiddleware":778}],15:[function(e,t,r){"use strict";const n=e("json-rpc-engine/src/mergeMiddleware"),i=e("json-rpc-engine/src/createScaffoldMiddleware"),o=e("json-rpc-engine/src/createAsyncMiddleware"),a=e("eth-json-rpc-middleware/wallet");function s({getPendingNonce:e}){return o(async(t,r,n)=>{if("eth_getTransactionCount"!==t.method)return n();const i=t.params[0];if("pending"!==t.params[1])return n();r.result=await e(i)})}t.exports=function({version:e,getAccounts:t,processTransaction:r,processEthSignMessage:o,processTypedMessage:c,processTypedMessageV3:u,processTypedMessageV4:f,processPersonalMessage:l,getPendingNonce:h}){return n([i({eth_syncing:!1,web3_clientVersion:`MetaMask/v${e}`}),a({getAccounts:t,processTransaction:r,processEthSignMessage:o,processTypedMessage:c,processTypedMessageV3:u,processTypedMessageV4:f,processPersonalMessage:l}),s({getPendingNonce:h})])}},{"eth-json-rpc-middleware/wallet":516,"json-rpc-engine/src/createAsyncMiddleware":775,"json-rpc-engine/src/createScaffoldMiddleware":776,"json-rpc-engine/src/mergeMiddleware":778}],16:[function(e,t,r){"use strict";t.exports={ROPSTEN:"ropsten",RINKEBY:"rinkeby",KOVAN:"kovan",MAINNET:"mainnet",LOCALHOST:"localhost",GOERLI:"goerli",MAINNET_CODE:1,ROPSTEN_CODE:3,RINKEBY_CODE:4,KOVAN_CODE:42,GOERLI_CODE:5,ROPSTEN_DISPLAY_NAME:"Ropsten",RINKEBY_DISPLAY_NAME:"Rinkeby",KOVAN_DISPLAY_NAME:"Kovan",MAINNET_DISPLAY_NAME:"Main Ethereum Network",GOERLI_DISPLAY_NAME:"Goerli"}},{}],17:[function(e,t,r){"use strict";const n=e("./network");t.exports=n},{"./network":18}],18:[function(e,t,r){(function(r){"use strict";const n=e("assert"),i=e("events"),o=e("obs-store"),a=e("obs-store/lib/composed"),s=e("eth-query"),c=e("json-rpc-engine"),u=e("eth-json-rpc-middleware/providerFromEngine"),f=e("loglevel"),l=e("./createMetamaskMiddleware"),h=e("./createInfuraClient"),d=e("./createJsonRpcClient"),p=e("./createLocalhostClient"),{createSwappableProxy:m,createEventEmitterProxy:y}=e("swappable-obj-proxy"),g=e("extend"),b={networkList:{}},{ROPSTEN:v,RINKEBY:w,KOVAN:x,MAINNET:_,LOCALHOST:k,GOERLI:S}=e("./enums"),E=[v,w,x,_,S],A=r.env.METAMASK_ENV,T=r.env.METAMASK_DEBUG;let C;const j={type:C="true"===r.env.IN_TEST?k:T||"test"===A?w:_},M={ticker:"ETH"};t.exports=class extends i{constructor(e={}){super();const t=e.provider||j;this.providerStore=new o(t),this.networkStore=new o("loading"),this.networkConfig=new o(M),this.store=new a({provider:this.providerStore,network:this.networkStore,settings:this.networkConfig}),this.on("networkDidChange",this.lookupNetwork),this._provider=null,this._blockTracker=null,this._providerProxy=null,this._blockTrackerProxy=null}initializeProvider(e){this._baseProviderParams=e;const{type:t,rpcTarget:r,chainId:n,ticker:i,nickname:o}=this.providerStore.getState();this._configureProvider({type:t,rpcTarget:r,chainId:n,ticker:i,nickname:o}),this.lookupNetwork()}getProviderAndBlockTracker(){return{provider:this._providerProxy,blockTracker:this._blockTrackerProxy}}verifyNetwork(){this.isNetworkLoading()&&this.lookupNetwork()}getNetworkState(){return this.networkStore.getState()}getNetworkConfig(){return this.networkConfig.getState()}setNetworkState(e,t){return"loading"===e?this.networkStore.putState(e):t?(e=b.networkList[t]&&b.networkList[t].chainId?b.networkList[t].chainId:e,this.networkStore.putState(e)):void 0}isNetworkLoading(){return"loading"===this.getNetworkState()}lookupNetwork(){if(!this._provider)return f.warn("NetworkController - lookupNetwork aborted due to missing provider");const{type:e}=this.providerStore.getState(),t=new s(this._provider),r=this.getNetworkState();t.sendAsync({method:"net_version"},(t,n)=>{const i=this.getNetworkState();if(r===i){if(t)return this.setNetworkState("loading");f.info("web3.getNetwork returned "+n),this.setNetworkState(n,e)}})}setRpcTarget(e,t,r="ETH",n="",i){const o={type:"rpc",rpcTarget:e,chainId:t,ticker:r,nickname:n,rpcPrefs:i};this.providerConfig=o}async setProviderType(e,t="",r="ETH",i=""){n.notEqual(e,"rpc",'NetworkController - cannot call "setProviderType" with type \'rpc\'. use "setRpcTarget"'),n(E.includes(e)||e===k,`NetworkController - Unknown rpc type "${e}"`);const o={type:e,rpcTarget:t,ticker:r,nickname:i};this.providerConfig=o}resetConnection(){this.providerConfig=this.getProviderConfig()}set providerConfig(e){this.providerStore.updateState(e),this._switchNetwork(e)}getProviderConfig(){return this.providerStore.getState()}_switchNetwork(e){this.setNetworkState("loading"),this._configureProvider(e),this.emit("networkDidChange",e.type)}_configureProvider(e){const{type:t,rpcTarget:r,chainId:n,ticker:i,nickname:o}=e;if(E.includes(t))this._configureInfuraProvider(e);else if(t===k)this._configureLocalhostProvider();else{if("rpc"!==t)throw new Error(`NetworkController - _configureProvider - unknown type "${t}"`);this._configureStandardProvider({rpcUrl:r,chainId:n,ticker:i,nickname:o})}}_configureInfuraProvider({type:e}){f.info("NetworkController - configureInfuraProvider",e);const t=h({network:e,onRequest:t=>this.emit("rpc-req",{network:e,req:t})});this._setNetworkClient(t);this.networkConfig.putState({ticker:"ETH"})}_configureLocalhostProvider(){f.info("NetworkController - configureLocalhostProvider");const e=p();this._setNetworkClient(e)}_configureStandardProvider({rpcUrl:e,chainId:t,ticker:r,nickname:n}){f.info("NetworkController - configureStandardProvider",e);const i=d({rpcUrl:e});b.networkList.rpc={chainId:t,rpcUrl:e,ticker:r||"ETH",nickname:n};var o={network:t};o=g(o,b.networkList.rpc),this.networkConfig.putState(o),this._setNetworkClient(i)}_setNetworkClient({networkMiddleware:e,blockTracker:t}){const r=l(this._baseProviderParams),n=new c;n.push(r),n.push(e);const i=u(n);this._setProviderAndBlockTracker({provider:i,blockTracker:t})}_setProviderAndBlockTracker({provider:e,blockTracker:t}){this._providerProxy?this._providerProxy.setTarget(e):this._providerProxy=m(e),this._blockTrackerProxy?this._blockTrackerProxy.setTarget(t):this._blockTrackerProxy=y(t,{eventFilter:"skipInternal"}),this._provider=e,this._blockTracker=t}_logBlock(e){f.info(`BLOCK CHANGED: #${e.number.toString("hex")} 0x${e.hash.toString("hex")}`),this.verifyNetwork()}}}).call(this,e("_process"))},{"./createInfuraClient":12,"./createJsonRpcClient":13,"./createLocalhostClient":14,"./createMetamaskMiddleware":15,"./enums":16,_process:898,assert:202,"eth-json-rpc-middleware/providerFromEngine":512,"eth-query":533,events:349,extend:592,"json-rpc-engine":777,loglevel:827,"obs-store":844,"obs-store/lib/composed":846,"swappable-obj-proxy":1300}],19:[function(e,t,r){"use strict";const n=e("obs-store"),i=e("xtend");t.exports=class{constructor(e={}){const t=i({seedPhraseBackedUp:!0},e.initState);this.store=new n(t)}setSeedPhraseBackedUp(e){this.store.updateState({seedPhraseBackedUp:e})}getSeedPhraseBackedUp(){return this.store.getState().seedPhraseBackedUp}}},{"obs-store":844,xtend:1430}],20:[function(e,t,r){(function(r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;tthis.setFeatureFlag(e,t)}setPasswordForgotten(e){this.store.updateState({forgottenPassword:e})}setUseBlockie(e){this.store.updateState({useBlockie:e})}setUseNonceField(e){this.store.updateState({useNonceField:e})}setParticipateInMetaMetrics(e){this.store.updateState({participateInMetaMetrics:e});let t=null;return e&&!this.store.getState().metaMetricsId?(t=f(u(String(Date.now())+String(Math.round(Math.random()*Number.MAX_SAFE_INTEGER)))),this.store.updateState({metaMetricsId:t})):!1===e&&this.store.updateState({metaMetricsId:t}),t}getMetaMetricsId(){return this.store.getState().metaMetricsId}getParticipateInMetaMetrics(){return this.store.getState().participateInMetaMetrics}setMetaMetricsSendCount(e){this.store.updateState({metaMetricsSendCount:e})}getMetaMetricsSendCount(){return this.store.getState().metaMetricsSendCount}setFirstTimeFlowType(e){this.store.updateState({firstTimeFlowType:e})}getSuggestedTokens(){return this.store.getState().suggestedTokens}getAssetImages(){return this.store.getState().assetImages}addSuggestedERC20Asset(e){this._validateERC20AssetParams(e);const t=this.getSuggestedTokens(),{rawAddress:r,symbol:n,decimals:i,image:o}=e,a=s(r),c={address:a,symbol:n,decimals:i,image:o};t[a]=c,this.store.updateState({suggestedTokens:t})}addKnownMethodData(e,t){const r=this.store.getState().knownMethodData;r[e]=t,this.store.updateState({knownMethodData:r})}async requestWatchAsset(e,t,r,n){if("metamask_watchAsset"===e.method||"wallet_watchAsset"===e.method){const{type:r,options:i}=e.params;switch(r){case"ERC20":const e=await this._handleWatchAssetERC20(i);e instanceof Error?n(e):(t.result=e,n());break;default:n(new Error(`Asset of type ${r} not supported`))}}else r()}getUseBlockie(){return this.store.getState().useBlockie}getUseNonceField(){return this.store.getState().useNonceField}setCurrentLocale(e){const t=["ar","dv","fa","he","ku"].includes(e)?"rtl":"auto";return this.store.updateState({currentLocale:e,textDirection:t}),t}setAddresses(e){const t=this.store.getState().identities,r=this.store.getState().accountTokens,n=e.reduce((e,r,n)=>{const i=t[r]||{};return e[r]=o({name:`Account ${n+1}`,address:r},i),e},{}),i=e.reduce((e,t)=>{const n=r[t]||{};return e[t]=n,e},{});this.store.updateState({identities:n,accountTokens:i})}removeAddress(e){const t=this.store.getState().identities,r=this.store.getState().accountTokens;if(!t[e])throw new Error(`${e} can't be deleted cause it was not found`);if(delete t[e],delete r[e],this.store.updateState({identities:t,accountTokens:r}),e===this.getSelectedAddress()){const e=Object.keys(t)[0];this.setSelectedAddress(e)}return e}addAddresses(e){const t=this.store.getState().identities,r=this.store.getState().accountTokens;e.forEach(e=>{if(t[e])return;const n=Object.keys(t).length;r[e]={},t[e]={name:`Account ${n+1}`,address:e}}),this.store.updateState({identities:t,accountTokens:r})}syncAddresses(e){const{identities:t,lostIdentities:r}=this.store.getState(),n={};if(Object.keys(t).forEach(r=>{e.includes(r)||(n[r]=t[r],delete t[r])}),Object.keys(n).length>0){this.diagnostics&&this.diagnostics.reportOrphans(n);for(const e in n)r[e]=n[e]}this.store.updateState({identities:t,lostIdentities:r}),this.addAddresses(e);let i=this.getSelectedAddress();return e.includes(i)||(i=e[0],this.setSelectedAddress(i)),i}removeSuggestedTokens(){return new Promise(e=>{this.store.updateState({suggestedTokens:{}}),e({})})}setSelectedAddress(e){const t=s(e);this._updateTokens(t),this.store.updateState({selectedAddress:t});const r=this.store.getState().tokens;return Promise.resolve(r)}getSelectedAddress(){return this.store.getState().selectedAddress}async addToken(e,t,r,n){const i=s(e),o={address:i,symbol:t,decimals:r},a=this.store.getState().tokens,c=this.getAssetImages(),u=a.find(e=>e.address===i),f=a.indexOf(u);return u?a[f]=o:a.push(o),c[i]=n,this._updateAccountTokens(a,c),Promise.resolve(a)}removeToken(e){const t=this.store.getState().tokens,r=this.getAssetImages(),n=t.filter(t=>t.address!==e);return delete r[e],this._updateAccountTokens(n,r),Promise.resolve(n)}getTokens(){return this.store.getState().tokens}setAccountLabel(e,t){if(!e)throw new Error("setAccountLabel requires a valid address, got "+String(e));const r=s(e),{identities:n}=this.store.getState();return n[r]=n[r]||{},n[r].name=t,this.store.updateState({identities:n}),Promise.resolve(t)}setCurrentAccountTab(e){return new Promise(t=>{this.store.updateState({currentAccountTab:e}),t()})}updateRpc(e){const t=this.getFrequentRpcListDetail(),r=t.findIndex(t=>t.rpcUrl===e.rpcUrl);if(!(r>-1)){const{rpcUrl:t,chainId:r,ticker:n,nickname:i,rpcPrefs:o={}}=e;return this.addToFrequentRpcList(t,r,n,i,o)}{const n=t[r],i=l(n,e);t[r]=i,this.store.updateState({frequentRpcListDetail:t})}return Promise.resolve(t)}addToFrequentRpcList(e,t,r="ETH",n="",i={}){const o=this.getFrequentRpcListDetail(),a=o.findIndex(t=>t.rpcUrl===e);if(-1!==a&&o.splice(a,1),"http://localhost:8545"!==e){let a;t&&!Number.isNaN(parseInt(t))&&(a=t),o.push({rpcUrl:e,chainId:a,ticker:r,nickname:n,rpcPrefs:i})}return this.store.updateState({frequentRpcListDetail:o}),Promise.resolve(o)}removeFromFrequentRpcList(e){const t=this.getFrequentRpcListDetail(),r=t.findIndex(t=>t.rpcUrl===e);return-1!==r&&t.splice(r,1),this.store.updateState({frequentRpcListDetail:t}),Promise.resolve(t)}getFrequentRpcListDetail(){return this.store.getState().frequentRpcListDetail}setFeatureFlag(e,t){const r=o({},this.store.getState().featureFlags,{[e]:t});return this.store.updateState({featureFlags:r}),Promise.resolve(r)}getFeatureFlags(){return this.store.getState().featureFlags}setPreference(e,t){const r=o({},this.getPreferences(),{[e]:t});return this.store.updateState({preferences:r}),Promise.resolve(r)}getPreferences(){return this.store.getState().preferences}completeOnboarding(){return this.store.updateState({completedOnboarding:!0}),Promise.resolve(!0)}unsetMigratedPrivacyMode(){return this.store.updateState({migratedPrivacyMode:!1}),Promise.resolve()}_subscribeProviderType(){this.network.providerStore.subscribe(()=>{const{tokens:e}=this._getTokenRelatedStates();this.store.updateState({tokens:e})})}_updateAccountTokens(e,t){const{accountTokens:r,providerType:n,selectedAddress:i}=this._getTokenRelatedStates();r[i][n]=e,this.store.updateState({accountTokens:r,tokens:e,assetImages:t})}_updateTokens(e){const{tokens:t}=this._getTokenRelatedStates(e);this.store.updateState({tokens:t})}_getTokenRelatedStates(e){const t=this.store.getState().accountTokens;e||(e=this.store.getState().selectedAddress);const r=this.network.providerStore.getState().type;return e in t||(t[e]={}),r in t[e]||(t[e][r]=[]),{tokens:t[e][r],accountTokens:t,providerType:r,selectedAddress:e}}async _handleWatchAssetERC20(e){const{address:t,symbol:r,decimals:n,image:i}=e,o=t;try{this._validateERC20AssetParams({rawAddress:o,symbol:r,decimals:n})}catch(e){return e}const a={rawAddress:o,decimals:n,symbol:r,image:i};return this.addSuggestedERC20Asset(a),this.openPopup().then(()=>{return this.getTokens().filter(e=>e.address===s(o)).length>0})}_validateERC20AssetParams(e){const{rawAddress:t,symbol:r,decimals:n}=e;if(!t||!r||void 0===n)throw new Error("Cannot suggest token without address, symbol, and decimals");if(!(r.length<7))throw new Error(`Invalid symbol ${r} more than six characters`);const i=parseInt(n,10);if(isNaN(i)||i>36||i<0)throw new Error(`Invalid decimals ${n} must be at least 0, and not over 36`);if(!c(t))throw new Error(`Invalid address ${t}`)}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"eth-sig-util":534,"ethereumjs-util":555,"obs-store":844,xtend:1430}],21:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t{if("eth_requestAccounts"!==r.method)return i();const o=this.keyringController.memStore.getState().isUnlocked;if(this.shouldExposeAccounts(e)&&o)return void(n.result=[this.preferencesController.getSelectedAddress()]);const a=await t(e);if(this._handleProviderRequest(e,a.name,a.icon),!await new Promise(t=>this.once(`resolvedRequest:${e}`,({approved:e})=>t(e))))throw u.eth.userRejectedRequest("User denied account authorization");n.result=[this.preferencesController.getSelectedAddress()]})}_handleProviderRequest(e,t,r){const{providerRequests:n}=this.memStore.getState();this.memStore.updateState({providerRequests:[...n,{origin:e,siteTitle:t,siteImage:r}]});const i=this.keyringController.memStore.getState().isUnlocked,{approvedOrigins:o}=this.store.getState();o[e]&&i||this.openPopup&&this.openPopup()}approveProviderRequestByOrigin(e){this.closePopup&&this.closePopup();const{approvedOrigins:t}=this.store.getState(),{providerRequests:r}=this.memStore.getState(),n=r.find(t=>t.origin===e),i=r.filter(t=>t.origin!==e);this.store.updateState({approvedOrigins:o({},t,{[e]:{siteTitle:n?n.siteTitle:null,siteImage:n?n.siteImage:null}})}),this.memStore.updateState({providerRequests:i}),this.emit(`resolvedRequest:${e}`,{approved:!0})}rejectProviderRequestByOrigin(e){this.closePopup&&this.closePopup();const{approvedOrigins:t}=this.store.getState(),{providerRequests:r}=this.memStore.getState(),n=r.filter(t=>t.origin!==e),i=Object.assign({},t);delete i[e],this.store.putState({approvedOrigins:i}),this.memStore.putState({providerRequests:n}),this.emit(`resolvedRequest:${e}`,{approved:!1})}clearApprovedOrigins(){this.store.updateState({approvedOrigins:{}})}shouldExposeAccounts(e){return Boolean(this.store.getState().approvedOrigins[e])}_getMergedState(){return Object.assign({},this.memStore.getState(),this.store.getState())}}},{"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"eth-json-rpc-errors":472,"json-rpc-engine/src/createAsyncMiddleware":775,"obs-store":844,"safe-event-emitter":1253}],22:[function(e,t,r){"use strict";const n=e("obs-store"),i=e("xtend"),o=e("eth-query"),a=e("loglevel"),s=e("pify"),{ROPSTEN:c,RINKEBY:u,KOVAN:f,MAINNET:l,GOERLI:h}=e("./network/enums"),d=[c,u,f,l,h];t.exports=class{constructor(e={}){const{blockTracker:t,provider:r,networkController:s}=e;this.blockTracker=t,this.ethQuery=new o(r),this.historyLength=e.historyLength||40;const c=i({recentBlocks:[]},e.initState);this.store=new n(c);const u=async e=>{try{await this.processBlock(e)}catch(e){a.error(e)}};let f=!1;const{type:l}=s.getProviderConfig();d.includes(l)||"loading"===l||(this.blockTracker.on("latest",u),f=!0),s.on("networkDidChange",e=>{d.includes(e)&&f?this.blockTracker.removeListener("latest",u):d.includes(l)||"loading"===l||f||this.blockTracker.on("latest",u)}),this.backfill()}resetState(){this.store.updateState({recentBlocks:[]})}async processBlock(e){const t=Number.parseInt(e,16),r=await this.getBlockByNumber(t,!0);if(!r)return;const n=this.mapTransactionsToPrices(r),i=this.store.getState();for(i.recentBlocks.push(n);i.recentBlocks.length>this.historyLength;)i.recentBlocks.shift();this.store.updateState(i)}backfillBlock(e){const t=this.mapTransactionsToPrices(e),r=this.store.getState();r.recentBlocks.lengthe.gasPrice)});return delete t.transactions,t}async backfill(){this.blockTracker.once("latest",async e=>{const t=Number.parseInt(e,16),r=Math.min(t,this.historyLength),n=t-1,i=Array(r).fill().map((e,t)=>n-t);await Promise.all(i.map(async e=>{try{const t=await this.getBlockByNumber(e,!0);if(!t)return;this.backfillBlock(t)}catch(e){a.error(e)}}))})}async getBlockByNumber(e){const t="0x"+e.toString(16);return await s(this.ethQuery.getBlockByNumber).call(this.ethQuery,t,!0)}}},{"./network/enums":16,"eth-query":533,loglevel:827,"obs-store":844,pify:893,xtend:1430}],23:[function(e,t,r){(function(r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t{if("3Box"!==e)return[];const t=s().isUnlocked,r=await this.keyringController.getAccounts();if(t&&r[0]){return[await this.keyringController.getAppKeyAddress(r[0],"wallet://3box.metamask.io")]}return[]},processPersonalMessage:async e=>{const t=await this.keyringController.getAccounts();return r.signPersonalMessage(o({},e,{from:t[0]}),{withAppKeyOrigin:"wallet://3box.metamask.io"})}});const c=o({threeBoxSyncingAllowed:!1,showRestorePrompt:!0,threeBoxLastUpdated:0},e.initState,{threeBoxAddress:null,threeBoxSynced:!1,threeBoxDisabled:!1});this.store=new a(c),this.registeringUpdates=!1,this.lastMigration=u.sort((e,t)=>e.version-t.version).slice(-1)[0],c.threeBoxSyncingAllowed&&this.init()}async init(){const e=await this.keyringController.getAccounts();this.address=e[0],!this.address||this.box&&this.store.getState().threeBoxSynced||await this.new3Box()}async _update3Box(){try{const{threeBoxSyncingAllowed:e,threeBoxSynced:t}=this.store.getState();if(e&&t){const e={preferences:this.preferencesController.store.getState(),addressBook:this.addressBookController.state,lastUpdated:Date.now(),lastMigration:this.lastMigration};await this.space.private.set("metamaskBackup",JSON.stringify(e)),await this.setShowRestorePromptToFalse()}}catch(e){console.error(e)}}_createProvider(e){const t=d(e),r=new l;return r.push(p({origin:"3Box"})),r.push(t),h(r)}_waitForOnSyncDone(){return new Promise(e=>{this.box.onSyncDone(()=>(c.debug("3Box box sync done"),e()))})}async new3Box(){const e=await this.keyringController.getAccounts();let t;this.address=await this.keyringController.getAppKeyAddress(e[0],"wallet://3box.metamask.io");try{const e=await s.getConfig(this.address);t=e.spaces&&e.spaces.metamask}catch(e){if(!e.message.match(/^Error: Invalid response \(404\)/))throw e;t=!1}if(this.getThreeBoxSyncingState()||t){this.store.updateState({threeBoxSynced:!1});let e=!1;const t=setTimeout(()=>{c.error(`3Box sync timed out after ${m} ms`),e=!0,this.store.updateState({threeBoxDisabled:!0,threeBoxSyncingAllowed:!1})},m);try{this.box=await s.openBox(this.address,this.provider),await this._waitForOnSyncDone(),this.space=await this.box.openSpace("metamask",{onSyncDone:async()=>{const r={threeBoxSynced:!0,threeBoxAddress:this.address};e&&(c.info("3Box sync completed after timeout; no longer disabled"),r.threeBoxDisabled=!1),clearTimeout(t),this.store.updateState(r),c.debug("3Box space sync done")}})}catch(e){throw console.error(e),e}}}async getLastUpdated(){const e=await this.space.private.get("metamaskBackup");return JSON.parse(e||"{}").lastUpdated}async migrateBackedUpState(e){const t=new f({migrations:u}),r={PreferencesController:e.preferences,AddressBookController:e.addressBook},n=t.generateInitialState(r),i=await t.migrateData(n);return{preferences:i.PreferencesController,addressBook:i.AddressBookController}}async restoreFromThreeBox(){const e=await this.space.private.get("metamaskBackup"),{preferences:t,addressBook:r}=await this.migrateBackedUpState(e);this.store.updateState({threeBoxLastUpdated:e.lastUpdated}),t&&this.preferencesController.store.updateState(JSON.parse(t)),r&&this.addressBookController.update(JSON.parse(r),!0),this.setShowRestorePromptToFalse()}turnThreeBoxSyncingOn(){this._registerUpdates()}turnThreeBoxSyncingOff(){this.box.logout()}setShowRestorePromptToFalse(){this.store.updateState({showRestorePrompt:!1})}setThreeBoxSyncingPermission(e){this.store.getState().threeBoxDisabled||(this.store.updateState({threeBoxSyncingAllowed:e}),e&&this.box&&this.turnThreeBoxSyncingOn(),!e&&this.box&&this.turnThreeBoxSyncingOff())}getThreeBoxSyncingState(){return this.store.getState().threeBoxSyncingAllowed}getThreeBoxAddress(){return this.store.getState().threeBoxAddress}_registerUpdates(){if(!this.registeringUpdates){const e=this._update3Box.bind(this);this.preferencesController.store.subscribe(e);const t=this._update3Box.bind(this);this.addressBookController.subscribe(t),this.registeringUpdates=!0}}}}).call(this,e("_process"))},{"../../../development/mock-3box":112,"../lib/createOriginMiddleware":43,"../lib/migrator":57,"../migrations/":110,"./network/createMetamaskMiddleware":15,"3box":"3box","@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,_process:898,"eth-json-rpc-middleware/providerFromEngine":512,"json-rpc-engine":777,loglevel:827,"obs-store":844}],24:[function(e,t,r){"use strict";const n=e("obs-store"),i=e("loglevel"),o=e("eth-sig-util").normalize,a=e("ethereumjs-util"),s=18e4;t.exports=class{constructor({interval:e=s,currency:t,preferences:r}={}){this.store=new n,this.currency=t,this.preferences=r,this.interval=e}async updateExchangeRates(){if(!this.isActive)return;const e={},t=this.currency?this.currency.state.nativeCurrency.toLowerCase():"eth",r=`contract_addresses=${this._tokens.map(e=>e.address).join(",")}&vs_currencies=${t}`;if(this._tokens.length>0)try{const n=await fetch(`https://api.coingecko.com/api/v3/simple/token_price/ethereum?${r}`),i=await n.json();this._tokens.forEach(r=>{const n=i[r.address.toLowerCase()]||i[a.toChecksumAddress(r.address)];e[o(r.address)]=n?n[t]:0})}catch(e){i.warn("MetaMask - TokenRatesController exchange rate fetch failed.",e)}this.store.putState({contractExchangeRates:e})}set interval(e){this._handle&&clearInterval(this._handle),e&&(this._handle=setInterval(()=>{this.updateExchangeRates()},e))}set preferences(e){this._preferences&&this._preferences.unsubscribe(),e&&(this._preferences=e,this.tokens=e.getState().tokens,e.subscribe(({tokens:e=[]})=>{this.tokens=e}))}set tokens(e){this._tokens=e,this.updateExchangeRates()}}},{"eth-sig-util":534,"ethereumjs-util":555,loglevel:827,"obs-store":844}],25:[function(e,t,r){"use strict";t.exports={TRANSACTION_TYPE_CANCEL:"cancel",TRANSACTION_TYPE_RETRY:"retry",TRANSACTION_TYPE_STANDARD:"standard",TRANSACTION_STATUS_APPROVED:"approved",TRANSACTION_STATUS_CONFIRMED:"confirmed"}},{}],26:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;tthis.query.sendRawTransaction(e),getPendingTransactions:()=>{return[...this.txStateManager.getPendingTransactions(),...this.txStateManager.getApprovedTransactions()]},approveTransaction:this.approveTransaction.bind(this),getCompletedTransactions:this.txStateManager.getConfirmedTransactions.bind(this.txStateManager)}),this.txStateManager.store.subscribe(()=>this.emit("update:badge")),this._setupListeners(),this._updateMemstore(),this.txStateManager.store.subscribe(()=>this._updateMemstore()),this.networkStore.subscribe(()=>{this._onBootCleanUp(),this._updateMemstore()}),this.preferencesStore.subscribe(()=>this._updateMemstore()),this._updatePendingTxsAfterFirstBlock()}getChainId(){const e=this.networkStore.getState(),t=parseInt(e);return Number.isNaN(t)?0:t}addTx(e){this.txStateManager.addTx(e),this.emit(`${e.id}:unapproved`,e)}wipeTransactions(e){this.txStateManager.wipeTransactions(e)}async newUnapprovedTransaction(e,t={}){A.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(e)}`);const r=await this.addUnapprovedTransaction(e);return r.origin=t.origin,this.txStateManager.updateTx(r,"#newUnapprovedTransaction - adding the origin"),new Promise((e,t)=>{this.txStateManager.once(`${r.id}:finished`,r=>{switch(r.status){case"submitted":return e(r.hash);case"rejected":return t(E(l.eth.userRejectedRequest("MetaMask Tx Signature: User denied transaction signature.")));case"failed":return t(E(l.internal(r.err.message)));default:return t(E(l.internal(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(r.txParams)}`)))}})})}async addUnapprovedTransaction(e){const t=S.normalizeTxParams(e);if(t.from!==this.getSelectedAddress())throw new Error("Transaction from address isn't valid for this account");S.validateTxParams(t);const{transactionCategory:r,getCodeResponse:n}=await this._determineTransactionCategory(e);let i=this.txStateManager.generateTxMeta({txParams:t,type:M,transactionCategory:r});this.addTx(i),this.emit("newUnapprovedTx",i);try{T.checkAccount(i.metamaskNetworkId,t.to),i=await this.addTxGasDefaults(i,n)}catch(e){throw A.warn(e),i.loadingDefaults=!1,this.txStateManager.updateTx(i,"Failed to calculate gas defaults."),e}return i.loadingDefaults=!1,this.txStateManager.updateTx(i),i}async addTxGasDefaults(e,t){const r=e.txParams;r.value=r.value?c.addHexPrefix(r.value):"0x0",e.gasPriceSpecified=Boolean(r.gasPrice);let n=r.gasPrice;return n||(n=this.getGasPrice?this.getGasPrice():await this.query.gasPrice()),r.gasPrice=c.addHexPrefix(n.toString(16)),await this.txGasUtil.analyzeGasUsage(e,t)}async retryTransaction(e,t){const r=this.txStateManager.getTx(e),{txParams:n}=r,i=t||r.txParams.gasPrice,o=new c.BN(c.stripHexPrefix(this.getGasPrice()),16),a=new c.BN(c.stripHexPrefix(i),16).mul(new c.BN(110,10)).div(new c.BN(100,10));n.gasPrice=o.gt(a)?`0x${o.toString(16)}`:`0x${a.toString(16)}`;const s=this.txStateManager.generateTxMeta({txParams:r.txParams,lastGasPrice:i,loadingDefaults:!1,type:j});return this.addTx(s),this.emit("newUnapprovedTx",s),s}async createCancelTransaction(e,t){const r=this.txStateManager.getTx(e),{txParams:n}=r,{gasPrice:i,from:o,nonce:a}=n,s=t||P(I(O(i),11,10)),c=this.txStateManager.generateTxMeta({txParams:{from:o,to:o,nonce:a,gas:"0x5208",value:"0x0",gasPrice:s},lastGasPrice:i,loadingDefaults:!1,status:B,type:C});return this.addTx(c),await this.approveTransaction(c.id),c}async createSpeedUpTransaction(e,t){const r=this.txStateManager.getTx(e),{txParams:n}=r,{gasPrice:i}=n,a=t||P(I(O(i),11,10)),s=this.txStateManager.generateTxMeta({txParams:o({},n,{gasPrice:a}),lastGasPrice:i,loadingDefaults:!1,status:B,type:j});return this.addTx(s),await this.approveTransaction(s.id),s}async updateTransaction(e){this.txStateManager.updateTx(e,"confTx: user updated transaction")}async updateAndApproveTransaction(e){this.txStateManager.updateTx(e,"confTx: user approved transaction"),await this.approveTransaction(e.id)}async approveTransaction(e){if(this.inProcessOfSigning.has(e))return;let t;this.inProcessOfSigning.add(e);try{this.txStateManager.setTxStatusApproved(e);const r=this.txStateManager.getTx(e),n=r.txParams.from;let{customNonceValue:i=null}=r;i=Number(i),t=await this.nonceTracker.getNonceLock(n);const o=r.lastGasPrice?r.txParams.nonce:t.nextNonce,a=i||o;r.txParams.nonce=c.addHexPrefix(a.toString(16)),r.nonceDetails=t.nonceDetails,i&&(r.nonceDetails.customNonceValue=i),this.txStateManager.updateTx(r,"transactions#approveTransaction");const s=await this.signTransaction(e);await this.publishTransaction(e,s),t.releaseLock()}catch(r){try{this.txStateManager.setTxStatusFailed(e,r)}catch(e){A.error(e)}throw t&&t.releaseLock(),r}finally{this.inProcessOfSigning.delete(e)}}async signTransaction(e){const t=this.txStateManager.getTx(e),r=this.getChainId(),n=Object.assign({},t.txParams,{chainId:r}),i=n.from,o=new u(n);return await this.signEthTx(o,i),this.txStateManager.setTxStatusSigned(t.id),c.bufferToHex(o.serialize())}async publishTransaction(e,t){const r=this.txStateManager.getTx(e);r.rawTx=t,this.txStateManager.updateTx(r,"transactions#publishTransaction");const n=await this.query.sendRawTransaction(t);this.setTxHash(e,n),this.txStateManager.setTxStatusSubmitted(e)}async confirmTransaction(e){const t=this.txStateManager.getTx(e);if(t){try{const e=await this.query.getTransactionReceipt(t.hash),r="string"!=typeof e.gasUsed?e.gasUsed.toString(16):e.gasUsed;t.txReceipt=o({},e,{gasUsed:r}),this.txStateManager.updateTx(t,"transactions#confirmTransaction - add txReceipt")}catch(e){A.error(e)}this.txStateManager.setTxStatusConfirmed(e),this._markNonceDuplicatesDropped(e)}}async cancelTransaction(e){this.txStateManager.setTxStatusRejected(e)}setTxHash(e,t){const r=this.txStateManager.getTx(e);r.hash=t,this.txStateManager.updateTx(r,"transactions#setTxHash")}_mapMethods(){this.getState=()=>this.memStore.getState(),this.getNetwork=()=>this.networkStore.getState(),this.getSelectedAddress=()=>this.preferencesStore.getState().selectedAddress,this.getUnapprovedTxCount=()=>Object.keys(this.txStateManager.getUnapprovedTxList()).length,this.getPendingTxCount=e=>this.txStateManager.getPendingTransactions(e).length,this.getFilteredTxList=e=>this.txStateManager.getFilteredTxList(e)}async _updatePendingTxsAfterFirstBlock(){await this.blockTracker.getLatestBlock(),await this.pendingTxTracker.updatePendingTxs()}_onBootCleanUp(){this.txStateManager.getFilteredTxList({status:"unapproved",loadingDefaults:!0}).forEach(e=>{this.addTxGasDefaults(e).then(e=>{e.loadingDefaults=!1,this.txStateManager.updateTx(e,"transactions: gas estimation for tx on boot")}).catch(t=>{e.loadingDefaults=!1,this.txStateManager.updateTx(e,"failed to estimate gas during boot cleanup."),this.txStateManager.setTxStatusFailed(e.id,t)})}),this.txStateManager.getFilteredTxList({status:B}).forEach(e=>{const t=new Error('Transaction found as "approved" during boot - possibly stuck during signing');this.txStateManager.setTxStatusFailed(e.id,t)})}_setupListeners(){this.txStateManager.on("tx:status-update",this.emit.bind(this,"tx:status-update")),this._setupBlockTrackerListener(),this.pendingTxTracker.on("tx:warning",e=>{this.txStateManager.updateTx(e,"transactions/pending-tx-tracker#event: tx:warning")}),this.pendingTxTracker.on("tx:failed",this.txStateManager.setTxStatusFailed.bind(this.txStateManager)),this.pendingTxTracker.on("tx:confirmed",e=>this.confirmTransaction(e)),this.pendingTxTracker.on("tx:dropped",this.txStateManager.setTxStatusDropped.bind(this.txStateManager)),this.pendingTxTracker.on("tx:block-update",(e,t)=>{e.firstRetryBlockNumber||(e.firstRetryBlockNumber=t,this.txStateManager.updateTx(e,"transactions/pending-tx-tracker#event: tx:block-update"))}),this.pendingTxTracker.on("tx:retry",e=>{"retryCount"in e||(e.retryCount=0),e.retryCount++,this.txStateManager.updateTx(e,"transactions/pending-tx-tracker#event: tx:retry")})}async _determineTransactionCategory(e){const{data:t,to:r}=e,{name:n}=t&&d.decodeMethod(t)||{},i=[p,m,y].find(e=>e===n&&n.toLowerCase());let o,a;if(e.data)if(i)o=i;else if(r){try{a=await this.query.getCode(r)}catch(e){a=null,A.warn(e)}o=!a||"0x"===a||"0x0"===a?g:v}else o=b;else o=g;return{transactionCategory:o,getCodeResponse:a}}_markNonceDuplicatesDropped(e){const t=this.txStateManager.getTx(e),{nonce:r,from:n}=t.txParams,i=this.txStateManager.getFilteredTxList({nonce:r,from:n});i.length&&i.forEach(r=>{r.id!==e&&(r.replacedBy=t.hash,this.txStateManager.updateTx(t,"transactions/pending-tx-tracker#event: tx:confirmed reference to confirmed txHash with same nonce"),this.txStateManager.setTxStatusDropped(r.id))})}_setupBlockTrackerListener(){let e=!1;const t=this._onLatestBlock.bind(this),r=this.blockTracker,n=this.txStateManager;function i(){const i=n.getPendingTransactions();!e&&i.length>0?(r.on("latest",t),e=!0):e&&!i.length&&(r.removeListener("latest",t),e=!1)}n.on("tx:status-update",i),i()}async _onLatestBlock(e){try{await this.pendingTxTracker.updatePendingTxs()}catch(e){A.error(e)}try{await this.pendingTxTracker.resubmitPendingTxs(e)}catch(e){A.error(e)}}_updateMemstore(){this.pendingTxTracker.updatePendingTxs();const e=this.txStateManager.getUnapprovedTxList(),t=this.txStateManager.getFilteredTxList({from:this.getSelectedAddress(),metamaskNetworkId:this.getNetwork()});this.memStore.updateState({unapprovedTxs:e,selectedAddressTxList:t})}}},{"../../../../ui/app/helpers/constants/transactions.js":1433,"../../lib/cleanErrorStack":40,"../../lib/util":70,"./enums":25,"./lib/recipient-blacklist-checker":27,"./lib/util":30,"./pending-tx-tracker":31,"./tx-gas-utils":32,"./tx-state-manager":33,"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"abi-decoder":148,"eth-json-rpc-errors":472,"ethereumjs-tx":550,"ethereumjs-util":555,"ethjs-query":582,"human-standard-token-abi":745,loglevel:827,"nonce-tracker":839,"obs-store":844,"safe-event-emitter":1253}],27:[function(e,t,r){"use strict";const n=e("./recipient-blacklist.js");t.exports={checkAccount:function(e,t){if(1!==e)return;const r=t.toLowerCase();if(n.blacklist.includes(r))throw new Error("Recipient is a public account")}}},{"./recipient-blacklist.js":28}],28:[function(e,t,r){"use strict";t.exports={blacklist:["0x9bcb0A9d99d815Bb87ee3191b1399b1Bcc46dc77","0x627306090abab3a6e1400e9345bc60c78a8bef57","0xf17f52151ebef6c7334fad080c5704d77216b732","0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef","0x821aea9a577a9b44299b9c15c88cf3087f3b5544","0x0d1d4e623d10f9fba5db95830f7d3839406c6af2","0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e","0x2191ef87e392377ec08e7c08eb105ef5448eced5","0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5","0x6330a553fc93768f612722bb8c2ec78ac90b3bbc","0x5aeda56215b167893e80b4fe645ba6d5bab767de"]}},{}],29:[function(e,t,r){"use strict";const n=e("fast-json-patch"),i=e("clone");function o(e,t,r){const i=n.compare(e,t);return i[0]&&(r&&(i[0].note=r),i[0].timestamp=Date.now()),i}t.exports={generateHistoryEntry:o,replayHistory:function(e){return i(e).reduce((e,t)=>n.applyPatch(e,t).newDocument)},snapshotFromTxMeta:function(e){const t=i(e);return delete t.history,t},migrateFromSnapshotsToDiffs:function(e){return e.map((t,r)=>0===r?t:o(e[r-1],t))}}},{clone:358,"fast-json-patch":610}],30:[function(e,t,r){"use strict";const{addHexPrefix:n,isValidAddress:i}=e("ethereumjs-util");t.exports={normalizeTxParams:function(e,t){const r={};for(const n in o)e[n]&&(r[n]=o[n](e[n],t));return r},validateTxParams:function(e){if(a(e),s(e),"value"in e){const t=e.value.toString();if(t.includes("-"))throw new Error(`Invalid transaction value of ${e.value} not a positive number.`);if(t.includes("."))throw new Error(`Invalid transaction value of ${e.value} number must be in wei`)}},validateFrom:a,validateRecipient:s,getFinalStates:function(){return["rejected","confirmed","failed","dropped"]}};const o={from:(e,t=!0)=>t?n(e).toLowerCase():n(e),to:(e,t=!0)=>t?n(e).toLowerCase():n(e),nonce:e=>n(e),value:e=>n(e),data:e=>n(e),gas:e=>n(e),gasPrice:e=>n(e)};function a(e){if("string"!=typeof e.from)throw new Error(`Invalid from address ${e.from} not a string`);if(!i(e.from))throw new Error("Invalid from address")}function s(e){if("0x"===e.to||null===e.to){if(!e.data)throw new Error("Invalid recipient address");delete e.to}else if(void 0!==e.to&&!i(e.to))throw new Error("Invalid recipient address");return e}},{"ethereumjs-util":555}],31:[function(e,t,r){"use strict";const n=e("safe-event-emitter"),i=e("loglevel"),o=e("ethjs-query");t.exports=class extends n{constructor(e){super(),this.droppedBuffer={},this.query=new o(e.provider),this.nonceTracker=e.nonceTracker,this.getPendingTransactions=e.getPendingTransactions,this.getCompletedTransactions=e.getCompletedTransactions,this.publishTransaction=e.publishTransaction,this.approveTransaction=e.approveTransaction,this.confirmTransaction=e.confirmTransaction}async updatePendingTxs(){const e=await this.nonceTracker.getGlobalLock();try{const e=this.getPendingTransactions();await Promise.all(e.map(e=>this._checkPendingTx(e)))}catch(e){i.error("PendingTransactionTracker - Error updating pending transactions"),i.error(e)}e.releaseLock()}resubmitPendingTxs(e){const t=this.getPendingTransactions();t.length&&t.forEach(t=>this._resubmitTx(t,e).catch(e=>{const r=e.message.toLowerCase();r.includes("replacement transaction underpriced")||r.includes("known transaction")||r.includes("gas price too low to replace")||r.includes("transaction with the same hash was already imported")||r.includes("gateway timeout")||r.includes("nonce too low")||(t.warning={error:r,message:"There was an error when resubmitting this transaction."},this.emit("tx:warning",t,e))}))}async _resubmitTx(e,t){e.firstRetryBlockNumber||this.emit("tx:block-update",e,t);const r=e.firstRetryBlockNumber||t,n=Number.parseInt(t,16)-Number.parseInt(r,16),i=e.retryCount||0;if(n<=Math.pow(2,i)-1)return;if(!("rawTx"in e))return this.approveTransaction(e.id);const o=e.rawTx,a=await this.publishTransaction(o);return this.emit("tx:retry",e),a}async _checkPendingTx(e){const t=e.hash,r=e.id;if("submitted"!==e.status)return;if(!t){const e=new Error("We had an error while submitting this transaction, please try again.");return e.name="NoTxHashError",void this.emit("tx:failed",r,e)}const n=await this._checkIfNonceIsTaken(e);let o;try{(o=await this._checkIftxWasDropped(e))&&!this.droppedBuffer[t]?(this.droppedBuffer[t]=!0,o=!1):o&&this.droppedBuffer[t]&&delete this.droppedBuffer[t]}catch(e){i.error(e)}if(n||o)return this.emit("tx:dropped",r);try{const{blockNumber:e}=await this.query.getTransactionByHash(t)||{};e&&this.emit("tx:confirmed",r)}catch(t){e.warning={error:t.message,message:"There was a problem loading this transaction."},this.emit("tx:warning",e,t)}}async _checkIftxWasDropped(e){const{txParams:{nonce:t,from:r},hash:n}=e,i=await this.query.getTransactionCount(r),{blockNumber:o}=await this.query.getTransactionByHash(n)||{};return!o&&parseInt(i)>parseInt(t)}async _checkIfNonceIsTaken(e){const t=e.txParams.from;return this.getCompletedTransactions(t).filter(t=>t.txParams.nonce===e.txParams.nonce).length>0}}},{"ethjs-query":582,loglevel:827,"safe-event-emitter":1253}],32:[function(e,t,r){"use strict";var n=e("../../../../ui/app/helpers/constants/error-keys");const i=e("ethjs-query"),{hexToBn:o,BnMultiplyByFraction:a,bnToHex:s}=e("../../lib/util"),c=e("loglevel"),{addHexPrefix:u}=e("ethereumjs-util"),{SEND_ETHER_ACTION_KEY:f}=e("../../../../ui/app/helpers/constants/transactions.js"),l="0x5208";t.exports=class{constructor(e){this.query=new i(e)}async analyzeGasUsage(e,t){const r=await this.query.getBlockByNumber("latest",!1);let i;try{i=await this.estimateTxGas(e,r.gasLimit,t)}catch(t){return c.warn(t),e.simulationFails={reason:t.message,errorKey:t.errorKey,debug:{blockNumber:r.number,blockGasLimit:r.gasLimit}},t.errorKey===n.TRANSACTION_NO_CONTRACT_ERROR_KEY&&(e.simulationFails.debug.getCodeResponse=t.getCodeResponse),e}return this.setTxGas(e,r.gasLimit,i),e}async estimateTxGas(e,t,r){const i=e.txParams;if(e.gasLimitSpecified=Boolean(i.gas),e.gasLimitSpecified)return i.gas;const c=i.to;if(Boolean(c)){if(e.transactionCategory===f){if(i.data){const e=new Error("TxGasUtil - Trying to call a function on a non-contract address");throw e.errorKey=n.TRANSACTION_NO_CONTRACT_ERROR_KEY,e.getCodeResponse=r,e}return i.gas=l,e.simpleSend=!0,l}}const u=o(t),h=a(u,19,20);return i.gas=s(h),await this.query.estimateGas(i)}setTxGas(e,t,r){e.estimatedGas=u(r);const n=e.txParams;if(e.gasLimitSpecified||e.simpleSend)return void(e.estimatedGas=n.gas);const i=this.addGasBuffer(e.estimatedGas,t);n.gas=i}addGasBuffer(e,t){const r=o(e),n=o(t).muln(.9),i=r.muln(1.5);return r.gt(n)?s(r):i.lt(n)?s(i):s(n)}}},{"../../../../ui/app/helpers/constants/error-keys":1432,"../../../../ui/app/helpers/constants/transactions.js":1433,"../../lib/util":70,"ethereumjs-util":555,"ethjs-query":582,loglevel:827}],33:[function(e,t,r){"use strict";const n=e("xtend"),i=e("safe-event-emitter"),o=e("obs-store"),a=e("loglevel"),s=e("./lib/tx-state-history-helper"),c=e("../../lib/random-id"),{getFinalStates:u,normalizeTxParams:f}=e("./lib/util");t.exports=class extends i{constructor({initState:e,txHistoryLimit:t,getNetwork:r}){super(),this.store=new o(n({transactions:[]},e)),this.txHistoryLimit=t,this.getNetwork=r}generateTxMeta(e){const t=this.getNetwork();if("loading"===t)throw new Error("MetaMask is having trouble connecting to the network");return n({id:c(),time:(new Date).getTime(),status:"unapproved",metamaskNetworkId:t,loadingDefaults:!0},e)}getTxList(){const e=this.getNetwork();return this.getFullTxList().filter(t=>t.metamaskNetworkId===e)}getFullTxList(){return this.store.getState().transactions}getUnapprovedTxList(){return this.getTxsByMetaData("status","unapproved").reduce((e,t)=>(e[t.id]=t,e),{})}getApprovedTransactions(e){const t={status:"approved"};return e&&(t.from=e),this.getFilteredTxList(t)}getPendingTransactions(e){const t={status:"submitted"};return e&&(t.from=e),this.getFilteredTxList(t)}getConfirmedTransactions(e){const t={status:"confirmed"};return e&&(t.from=e),this.getFilteredTxList(t)}addTx(e){e.txParams&&(e.txParams=this.normalizeAndValidateTxParams(e.txParams)),this.once(`${e.id}:signed`,(function(){this.removeAllListeners(`${e.id}:rejected`)})),this.once(`${e.id}:rejected`,(function(){this.removeAllListeners(`${e.id}:signed`)})),e.history=[];const t=s.snapshotFromTxMeta(e);e.history.push(t);const r=this.getFullTxList();if(r.length>this.txHistoryLimit-1){const e=r.findIndex(e=>u().includes(e.status));-1!==e&&r.splice(e,1)}return r.push(e),this._saveTxList(r),e}getTx(e){return this.getTxsByMetaData("id",e)[0]}updateTx(e,t){e.txParams&&(e.txParams=this.normalizeAndValidateTxParams(e.txParams));const r=s.snapshotFromTxMeta(e),n=s.replayHistory(e.history),i=s.generateHistoryEntry(n,r,t);e.history.push(i);const o=e.id,a=this.getFullTxList(),c=a.findIndex(e=>e.id===o);a[c]=e,this._saveTxList(a)}updateTxParams(e,t){const r=this.getTx(e);r.txParams=n(r.txParams,t),this.updateTx(r,"txStateManager#updateTxParams")}normalizeAndValidateTxParams(e){return void 0===e.data&&delete e.data,e=f(e,!1),this.validateTxParams(e),e}validateTxParams(e){Object.keys(e).forEach(t=>{const r=e[t];switch(t){case"chainId":if("number"!=typeof r&&"string"!=typeof r)throw new Error(`${t} in txParams is not a Number or hex string. got: (${r})`);break;default:if("string"!=typeof r)throw new Error(`${t} in txParams is not a string. got: (${r})`)}})}getFilteredTxList(e,t){let r=t;return Object.keys(e).forEach(t=>{r=this.getTxsByMetaData(t,e[t],r)}),r}getTxsByMetaData(e,t,r=this.getTxList()){const n="function"==typeof t?t:e=>e===t;return r.filter(t=>e in t.txParams?n(t.txParams[e]):n(t[e]))}getTxStatus(e){return this.getTx(e).status}setTxStatusRejected(e){this._setTxStatus(e,"rejected"),this._removeTx(e)}setTxStatusUnapproved(e){this._setTxStatus(e,"unapproved")}setTxStatusApproved(e){this._setTxStatus(e,"approved")}setTxStatusSigned(e){this._setTxStatus(e,"signed")}setTxStatusSubmitted(e){const t=this.getTx(e);t.submittedTime=(new Date).getTime(),this.updateTx(t,"txStateManager - add submitted time stamp"),this._setTxStatus(e,"submitted")}setTxStatusConfirmed(e){this._setTxStatus(e,"confirmed")}setTxStatusDropped(e){this._setTxStatus(e,"dropped")}setTxStatusFailed(e,t){const r=t||new Error("Internal metamask failure"),n=this.getTx(e);n.err={message:r.toString(),rpc:r.value,stack:r.stack},this.updateTx(n,"transactions:tx-state-manager#fail - add error"),this._setTxStatus(e,"failed")}wipeTransactions(e){const t=this.getFullTxList(),r=this.getNetwork(),n=t.filter(t=>!(t.txParams.from===e&&t.metamaskNetworkId===r));this._saveTxList(n)}_setTxStatus(e,t){const r=this.getTx(e);r&&(r.status=t,setTimeout(()=>{try{this.updateTx(r,`txStateManager: setting status to ${t}`),this.emit(`${r.id}:${t}`,e),this.emit("tx:status-update",e,t),["submitted","rejected","failed"].includes(t)&&this.emit(`${r.id}:finished`,r),this.emit("update:badge")}catch(e){a.error(e)}}))}_saveTxList(e){this.store.updateState({transactions:e})}_removeTx(e){const t=this.getFullTxList();this._saveTxList(t.filter(t=>t.id!==e))}}},{"../../lib/random-id":61,"./lib/tx-state-history-helper":29,"./lib/util":30,loglevel:827,"obs-store":844,"safe-event-emitter":1253,xtend:1430}],34:[function(e,t,r){(function(r){"use strict";const n=e("asmcrypto.js"),i=e("browserify-unibabel");t.exports=class{encrypt(e,t){var o=this._generateSalt();return this._keyFromPassword(e,o).then((function(e){var a=JSON.stringify(t),s=i.utf8ToBuffer(a),c=r.crypto.getRandomValues(new Uint8Array(16)),u=n.AES_GCM.encrypt(s,e,c),f=new Uint8Array(u),l=i.bufferToBase64(c),h=i.bufferToBase64(f);return JSON.stringify({data:h,iv:l,salt:o})}))}decrypt(e,t){const r=JSON.parse(t),o=r.salt;return this._keyFromPassword(e,o).then((function(e){const t=i.base64ToBuffer(r.data),o=i.base64ToBuffer(r.iv);return new Promise((r,a)=>{var s;try{s=n.AES_GCM.decrypt(t,e,o)}catch(e){return a(new Error("Incorrect password"))}const c=new Uint8Array(s),u=i.bufferToUtf8(c);r(JSON.parse(u))})}))}_keyFromPassword(e,t){var r=i.utf8ToBuffer(e),o=i.base64ToBuffer(t);return new Promise(e=>{e(n.Pbkdf2HmacSha256(r,o,1e4,32))})}_generateSalt(e=32){var t=new Uint8Array(e);return r.crypto.getRandomValues(t),btoa(String.fromCharCode.apply(null,t))}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"asmcrypto.js":201,"browserify-unibabel":347}],35:[function(e,t,r){"use strict";t.exports={config:{}}},{}],36:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t{this.updateState({[t]:e})})}getFlatState(){let e={};for(const t in this.config){const r=this.config[t];e=o({},e,{},r.getState?r.getState():r.state)}return e}}},{"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"obs-store":844}],37:[function(e,t,r){"use strict";const n=e("eth-query"),i=e("obs-store"),o=e("loglevel"),a=e("pify"),s=e("web3"),c=e("single-call-balance-checker-abi"),{bnToHex:u}=e("./util"),{MAINNET_CODE:f,RINKEBY_CODE:l,ROPSTEN_CODE:h,KOVAN_CODE:d}=e("../controllers/network/enums"),{SINGLE_CALL_BALANCES_ADDRESS:p,SINGLE_CALL_BALANCES_ADDRESS_RINKEBY:m,SINGLE_CALL_BALANCES_ADDRESS_ROPSTEN:y,SINGLE_CALL_BALANCES_ADDRESS_KOVAN:g}=e("../controllers/network/contract-addresses");t.exports=class{constructor(e={}){this.store=new i({accounts:{},currentBlockGasLimit:""}),this._provider=e.provider,this._query=a(new n(this._provider)),this._blockTracker=e.blockTracker,this._currentBlockNumber=this._blockTracker.getCurrentBlock(),this._blockTracker.once("latest",e=>{this._currentBlockNumber=e}),this._updateForBlock=this._updateForBlock.bind(this),this.network=e.network,this.web3=new s(this._provider)}start(){this._blockTracker.removeListener("latest",this._updateForBlock),this._blockTracker.addListener("latest",this._updateForBlock),this._updateAccounts()}stop(){this._blockTracker.removeListener("latest",this._updateForBlock)}syncWithAddresses(e){const t=this.store.getState().accounts,r=Object.keys(t),n=[];e.forEach(e=>{r.includes(e)||n.push(e)});const i=[];r.forEach(t=>{e.includes(t)||i.push(t)}),this.addAccounts(n),this.removeAccount(i)}addAccounts(e){const t=this.store.getState().accounts;e.forEach(e=>{t[e]={}}),this.store.updateState({accounts:t}),this._currentBlockNumber&&this._updateAccounts()}removeAccount(e){const t=this.store.getState().accounts;e.forEach(e=>{delete t[e]}),this.store.updateState({accounts:t})}async _updateForBlock(e){this._currentBlockNumber=e;const t=await this._query.getBlockByNumber(e,!1);if(!t)return;const r=t.gasLimit;this.store.updateState({currentBlockGasLimit:r});try{await this._updateAccounts()}catch(e){o.error(e)}}async _updateAccounts(){const e=this.store.getState().accounts,t=Object.keys(e);switch(parseInt(this.network.getNetworkState())){case f:await this._updateAccountsViaBalanceChecker(t,p);break;case l:await this._updateAccountsViaBalanceChecker(t,m);break;case h:await this._updateAccountsViaBalanceChecker(t,y);break;case d:await this._updateAccountsViaBalanceChecker(t,g);break;default:await Promise.all(t.map(this._updateAccount.bind(this)))}}async _updateAccount(e){const t={address:e,balance:await this._query.getBalance(e)},{accounts:r}=this.store.getState();r[e]&&(r[e]=t,this.store.updateState({accounts:r}))}async _updateAccountsViaBalanceChecker(e,t){const r=this.store.getState().accounts;this.web3.setProvider(this._provider);this.web3.eth.contract(c).at(t).balances(e,["0x0"],(t,n)=>{if(t)return o.warn("MetaMask - Account Tracker single call balance fetch failed",t),Promise.all(e.map(this._updateAccount.bind(this)));e.forEach((e,t)=>{const i=u(n[t]);r[e]={address:e,balance:i}}),this.store.updateState({accounts:r})})}}},{"../controllers/network/contract-addresses":11,"../controllers/network/enums":16,"./util":70,"eth-query":533,loglevel:827,"obs-store":844,pify:893,"single-call-balance-checker-abi":1290,web3:1371}],38:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}const{getMetaMetricState:o}=e("../../../ui/app/selectors/selectors"),{sendMetaMetricsEvent:a}=e("../../../ui/app/helpers/utils/metametrics.util"),s="http://www.metamask.io/metametrics-prod";t.exports=function(e,t){const r=o({metamask:e});r.participateInMetaMetrics&&a(function(e){for(var t=1;t{t=e}),async function(){return t||await new Promise(t=>e.once("remote",t))}}},{}],42:[function(e,t,r){"use strict";const n=e("loglevel");t.exports=function(e){return function(t,r,i){i(i=>{r.error&&n.error("Error in RPC response:\n",r),t.isMetamaskInternal||(n.info(`RPC (${e.origin}):`,t,"->",r),i())})}}},{loglevel:827}],43:[function(e,t,r){"use strict";t.exports=function(e){return function(t,r,n){t.origin=e.origin,n()}}},{}],44:[function(e,t,r){"use strict";const n=e("readable-stream").Writable,i=e("promise-to-callback");class o extends n{constructor(e,t){super(Object.assign({objectMode:!0},t)),this._asyncWriteFn=e}_write(e,t,r){i(this._asyncWriteFn(e,t))(r)}}t.exports=function(e,t){return new o(e,t)}},{"promise-to-callback":901,"readable-stream":1246}],45:[function(e,t,r){"use strict";t.exports=[{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"resolver",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"label",type:"bytes32"},{name:"owner",type:"address"}],name:"setSubnodeOwner",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"ttl",type:"uint64"}],name:"setTTL",outputs:[],payable:!1,type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"ttl",outputs:[{name:"",type:"uint64"}],payable:!1,type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"resolver",type:"address"}],name:"setResolver",outputs:[],payable:!1,type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"owner",type:"address"}],name:"setOwner",outputs:[],payable:!1,type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"owner",type:"address"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!0,name:"label",type:"bytes32"},{indexed:!1,name:"owner",type:"address"}],name:"NewOwner",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"resolver",type:"address"}],name:"NewResolver",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"ttl",type:"uint64"}],name:"NewTTL",type:"event"}]},{}],46:[function(e,t,r){"use strict";t.exports=[{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"hash",type:"bytes32"}],name:"setContent",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"content",outputs:[{name:"",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"interfaceID",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"key",type:"string"},{name:"value",type:"string"}],name:"setText",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"},{name:"contentTypes",type:"uint256"}],name:"ABI",outputs:[{name:"contentType",type:"uint256"},{name:"data",type:"bytes"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],name:"setPubkey",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"hash",type:"bytes"}],name:"setContenthash",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"addr",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"},{name:"key",type:"string"}],name:"text",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"contentType",type:"uint256"},{name:"data",type:"bytes"}],name:"setABI",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"name",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"name",type:"string"}],name:"setName",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"contenthash",outputs:[{name:"",type:"bytes"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"node",type:"bytes32"}],name:"pubkey",outputs:[{name:"x",type:"bytes32"},{name:"y",type:"bytes32"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"node",type:"bytes32"},{name:"addr",type:"address"}],name:"setAddr",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{inputs:[{name:"ensAddr",type:"address"}],payable:!1,stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"a",type:"address"}],name:"AddrChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"name",type:"string"}],name:"NameChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!0,name:"contentType",type:"uint256"}],name:"ABIChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"x",type:"bytes32"},{indexed:!1,name:"y",type:"bytes32"}],name:"PubkeyChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"indexedKey",type:"string"},{indexed:!1,name:"key",type:"string"}],name:"TextChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"node",type:"bytes32"},{indexed:!1,name:"hash",type:"bytes"}],name:"ContenthashChanged",type:"event"}]},{}],47:[function(e,t,r){"use strict";const n=e("eth-ens-namehash"),i=e("ethjs-query"),o=e("ethjs-contract"),a=e("./contracts/registry"),s=e("./contracts/resolver"),c=e("content-hash");function u(e){return[void 0,null,"0x","0x0","0x0000000000000000000000000000000000000000000000000000000000000000"].includes(e)}t.exports=async function({provider:e,name:t}){const r=new i(e),f=n.hash(t),l=new o(r),h=Number.parseInt(await r.net_version(),10),d=function(e){switch(e){case 1:return"0x314159265dd8dbb310642f98f50c066173c1259b";case 3:return"0x112234455c3a32fd11230c42e7bccd4a84e02010";case 4:return"0xe7410170f87102df0055eb195163a03b7f2bff4a";case 5:return"0x112234455c3a32fd11230c42e7bccd4a84e02010"}}(h);if(!d)throw new Error(`EnsIpfsResolver - no known ens-ipfs registry for chainId "${h}"`);const p=l(a).at(d),m=(await p.resolver(f))[0];if(u(m))throw new Error(`EnsIpfsResolver - no resolver found for name "${t}"`);const y=l(s).at(m),g=await y.supportsInterface("0xbc1c58d1"),b=await y.supportsInterface("0xd8389dc5");if(g[0]){const e=(await y.contenthash(f))[0],t=c.decode(e);return{type:c.getCodec(e),hash:t}}if(b[0]){const e=(await y.content(f))[0];if(u(e))throw new Error(`EnsIpfsResolver - no content ID found for name "${t}"`);return{type:"swarm-ns",hash:e.slice(2)}}throw new Error(`EnsIpfsResolver - the resolver for name "${t}" is not standard, it should either supports contenthash() or content()`)}},{"./contracts/registry":45,"./contracts/resolver":46,"content-hash":373,"eth-ens-namehash":466,"ethjs-contract":578,"ethjs-query":582}],48:[function(e,t,r){"use strict";const n=e("url"),i=e("extensionizer"),o=e("./resolver.js"),a=["eth"];t.exports=function({provider:e}){const t=a.map(e=>`*://*.${e}/*`);return i.webRequest.onErrorOccurred.addListener(r,{urls:t}),{remove(){i.webRequest.onErrorOccurred.removeListener(r)}};async function r(t){const{tabId:r,url:s}=t;if(-1===r)return;const c=n.parse(s),{hostname:u,path:f,search:l}=c,h=u.split("."),d=h[h.length-1];a.includes(d)&&async function({tabId:t,name:r,path:n,search:a}){i.tabs.update(t,{url:"loading.html"});let s=`https://manager.ens.domains/name/${r}`;try{const{type:c,hash:u}=await o({provider:e,name:r});if("ipfs-ns"===c){const e=`https://gateway.ipfs.io/ipfs/${u}${n}${a||""}`;try{200===(await fetch(e,{method:"HEAD"})).status&&(s=e)}catch(e){console.warn(e)}}else"swarm-ns"===c?s=`https://swarm-gateways.net/bzz:/${u}${n}${a||""}`:"onion"!==c&&"onion3"!==c||(s=`http://${u}.onion${n}${a||""}`)}catch(e){console.warn(e)}finally{i.tabs.update(t,{url:s})}}({tabId:r,name:u,path:f,search:l})}}},{"./resolver.js":47,extensionizer:608,url:1356}],49:[function(e,t,r){"use strict";t.exports={ENVIRONMENT_TYPE_POPUP:"popup",ENVIRONMENT_TYPE_NOTIFICATION:"notification",ENVIRONMENT_TYPE_FULLSCREEN:"fullscreen",ENVIRONMENT_TYPE_BACKGROUND:"background",PLATFORM_BRAVE:"Brave",PLATFORM_CHROME:"Chrome",PLATFORM_EDGE:"Edge",PLATFORM_FIREFOX:"Firefox",PLATFORM_OPERA:"Opera",MAINNET_CHAIN_ID:"0x1",ROPSTEN_CHAIN_ID:"0x3",RINKEBY_CHAIN_ID:"0x4",KOVAN_CHAIN_ID:"0x2a",GOERLI_CHAIN_ID:"0x5"}},{}],50:[function(e,t,r){"use strict";const n="Error: [ethjs-rpc] rpc error with payload ",i="Error: ";t.exports=function(e){if(e.includes(n)){const t=e.slice(n.length);return t.slice(t.indexOf(i)+i.length)}return e}},{}],51:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=n(e("@babel/runtime/helpers/defineProperty"));function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var a=({timeout:e=12e4}={})=>(async function(t,r){const n=new AbortController,a=n.signal,s=fetch(t,function(e){for(var t=1;tn.abort(),e);try{const e=await s;return clearTimeout(c),e}catch(e){throw clearTimeout(c),e}});r.default=a},{"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115}],52:[function(e,t,r){"use strict";const n=e("extensionizer"),i=e("pify"),o=e("../../_locales/index.json"),a=n.i18n?i(n.i18n.getAcceptLanguages,{errorFirst:!1}):async()=>[],s={};o.forEach(e=>{e&&e.code&&(s[e.code.toLowerCase().replace("_","-")]=e.code)}),t.exports=async function(){let e;try{e=await a()}catch(t){e=[]}e||(e=[]);const t=e.map(e=>e.toLowerCase().replace("_","-")).find(e=>s.hasOwnProperty(e));return s[t]||"en"}},{"../../_locales/index.json":1,extensionizer:608,pify:893}],53:[function(e,t,r){"use strict";const n=e("clone");t.exports=function(e){return function e(t={},r){Object.entries(t).forEach(([n,i])=>{t[n]="object"==typeof i&&null!==i?e(i,r):r(i)});return t}(n(e),e=>null===e?"null":typeof e)}},{clone:358}],54:[function(e,t,r){"use strict";const n=e("ethereumjs-util"),i=n.BN;t.exports=function(e){return new i(n.stripHexPrefix(e),16)}},{"ethereumjs-util":555}],55:[function(e,t,r){"use strict";const n=e("extensionizer"),i=e("loglevel");function o(){const e=n.runtime.lastError;if(e)return e.stack&&e.message?e:new Error(e.message)}t.exports=class{constructor(){this.isSupported=!!n.storage.local,this.isSupported||i.error("Storage local API not available.")}async get(){if(!this.isSupported)return;const e=await this._get();return t=e,0===Object.keys(t).length?void 0:e;var t}async set(e){return this._set(e)}_get(){const e=n.storage.local;return new Promise((t,r)=>{e.get(null,e=>{const n=o();n?r(n):t(e)})})}_set(e){const t=n.storage.local;return new Promise((r,n)=>{t.set(e,()=>{const e=o();e?n(e):r()})})}}},{extensionizer:608,loglevel:827}],56:[function(e,t,r){(function(r){"use strict";const n=e("events"),i=e("obs-store"),o=e("ethereumjs-util"),{errors:a}=e("eth-json-rpc-errors"),s=e("./random-id");t.exports=class extends n{constructor(){super(),this.memStore=new i({unapprovedMsgs:{},unapprovedMsgCount:0}),this.messages=[]}get unapprovedMsgCount(){return Object.keys(this.getUnapprovedMsgs()).length}getUnapprovedMsgs(){return this.messages.filter(e=>"unapproved"===e.status).reduce((e,t)=>(e[t.id]=t,e),{})}addUnapprovedMessageAsync(e,t){return new Promise((r,n)=>{const i=this.addUnapprovedMessage(e,t);this.once(`${i}:finished`,t=>{switch(t.status){case"signed":return r(t.rawSig);case"rejected":return n(a.eth.userRejectedRequest("MetaMask Message Signature: User denied message signature."));default:return n(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(e)}`))}})})}addUnapprovedMessage(e,t){var n;t&&(e.origin=t.origin),e.data="0x"===(n=e.data).slice(0,2)?n:o.bufferToHex(r.from(n,"utf8"));var i=(new Date).getTime(),a=s(),c={id:a,msgParams:e,time:i,status:"unapproved",type:"eth_sign"};return this.addMsg(c),this.emit("update"),a}addMsg(e){this.messages.push(e),this._saveMsgList()}getMsg(e){return this.messages.find(t=>t.id===e)}approveMessage(e){return this.setMsgStatusApproved(e.metamaskId),this.prepMsgForSigning(e)}setMsgStatusApproved(e){this._setMsgStatus(e,"approved")}setMsgStatusSigned(e,t){const r=this.getMsg(e);r.rawSig=t,this._updateMsg(r),this._setMsgStatus(e,"signed")}prepMsgForSigning(e){return delete e.metamaskId,Promise.resolve(e)}rejectMsg(e){this._setMsgStatus(e,"rejected")}_setMsgStatus(e,t){const r=this.getMsg(e);if(!r)throw new Error('MessageManager - Message not found for id: "${msgId}".');r.status=t,this._updateMsg(r),this.emit(`${e}:${t}`,r),"rejected"!==t&&"signed"!==t||this.emit(`${e}:finished`,r)}_updateMsg(e){const t=this.messages.findIndex(t=>t.id===e.id);-1!==t&&(this.messages[t]=e),this._saveMsgList()}_saveMsgList(){const e=this.getUnapprovedMsgs(),t=Object.keys(e).length;this.memStore.updateState({unapprovedMsgs:e,unapprovedMsgCount:t}),this.emit("updateBadge")}}}).call(this,e("buffer").Buffer)},{"./random-id":61,buffer:348,"eth-json-rpc-errors":472,"ethereumjs-util":555,events:349,"obs-store":844}],57:[function(e,t,r){"use strict";const n=e("events");t.exports=class extends n{constructor(e={}){super();const t=e.migrations||[];this.migrations=t.sort((e,t)=>e.version-t.version);const r=this.migrations.slice(-1)[0];this.defaultVersion=e.defaultVersion||r&&r.version||0}async migrateData(e=this.generateInitialState()){const t=this.migrations.filter((function(t){return t.version>e.meta.version}));for(const r in t){const n=t[r];try{const t=await n.migrate(e);if(!t.data)throw new Error("Migrator - migration returned empty data");if(void 0!==t.version&&t.meta.version!==n.version)throw new Error("Migrator - Migration did not update version number correctly");e=t}catch(t){const r=t.message;return t.message=`MetaMask Migration Error #${n.version}: ${r}`,console.warn(t.stack),this.emit("error",t),e}}return e}generateInitialState(e){return{meta:{version:this.defaultVersion},data:e}}}},{events:349}],58:[function(e,t,r){"use strict";const n=e("promise-to-callback"),i=function(e){if(e)throw e};t.exports=function(e,t){return function(){const r=[].slice.call(arguments),o=r[r.length-1],a="function"==typeof o;let s,c;a?(s=o,r.pop()):s=i;try{c=Promise.resolve(e.apply(t,r))}catch(e){c=Promise.reject(e)}n(c)(s)}}},{"promise-to-callback":901}],59:[function(e,t,r){"use strict";const n=e("extensionizer"),i=620,o=360;t.exports=class{showPopup(){this._getPopup((e,t)=>{if(e)throw e;if(t)n.windows.update(t.id,{focused:!0});else{const{screenX:e,screenY:t,outerWidth:r,outerHeight:a}=window,s=Math.round(t+a/2-i/2),c=Math.round(e+r/2-o/2),u=e=>{this._popupId=e.id},f=n.windows.create({url:"notification.html",type:"popup",width:o,height:i,top:Math.max(s,0),left:Math.max(c,0)},u);f&&f.then&&f.then(u)}})}closePopup(){this._getPopup((e,t)=>{if(e)throw e;t&&n.windows.remove(t.id,console.error)})}_getPopup(e){this._getWindows((t,r)=>{if(t)throw t;e(null,this._getPopupIn(r))})}_getWindows(e){if(!n.windows)return e();n.windows.getAll({},t=>{e(null,t)})}_getPopupIn(e){return e?e.find(e=>e&&"popup"===e.type&&e.id===this._popupId):null}}},{extensionizer:608}],60:[function(e,t,r){(function(r){"use strict";const n=e("events"),i=e("obs-store"),o=e("ethereumjs-util"),{errors:a}=e("eth-json-rpc-errors"),s=e("./random-id"),c=/^[0-9A-Fa-f]+$/g,u=e("loglevel");t.exports=class extends n{constructor(){super(),this.memStore=new i({unapprovedPersonalMsgs:{},unapprovedPersonalMsgCount:0}),this.messages=[]}get unapprovedPersonalMsgCount(){return Object.keys(this.getUnapprovedMsgs()).length}getUnapprovedMsgs(){return this.messages.filter(e=>"unapproved"===e.status).reduce((e,t)=>(e[t.id]=t,e),{})}addUnapprovedMessageAsync(e,t){return new Promise((r,n)=>{e.from||n(new Error("MetaMask Message Signature: from field is required."));const i=this.addUnapprovedMessage(e,t);this.once(`${i}:finished`,t=>{switch(t.status){case"signed":return r(t.rawSig);case"rejected":return n(a.eth.userRejectedRequest("MetaMask Message Signature: User denied message signature."));default:return n(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(e)}`))}})})}addUnapprovedMessage(e,t){u.debug(`PersonalMessageManager addUnapprovedMessage: ${JSON.stringify(e)}`),t&&(e.origin=t.origin),e.data=this.normalizeMsgData(e.data);var r=(new Date).getTime(),n=s(),i={id:n,msgParams:e,time:r,status:"unapproved",type:"personal_sign"};return this.addMsg(i),this.emit("update"),n}addMsg(e){this.messages.push(e),this._saveMsgList()}getMsg(e){return this.messages.find(t=>t.id===e)}approveMessage(e){return this.setMsgStatusApproved(e.metamaskId),this.prepMsgForSigning(e)}setMsgStatusApproved(e){this._setMsgStatus(e,"approved")}setMsgStatusSigned(e,t){const r=this.getMsg(e);r.rawSig=t,this._updateMsg(r),this._setMsgStatus(e,"signed")}prepMsgForSigning(e){return delete e.metamaskId,Promise.resolve(e)}rejectMsg(e){this._setMsgStatus(e,"rejected")}_setMsgStatus(e,t){const r=this.getMsg(e);if(!r)throw new Error(`PersonalMessageManager - Message not found for id: "${e}".`);r.status=t,this._updateMsg(r),this.emit(`${e}:${t}`,r),"rejected"!==t&&"signed"!==t||this.emit(`${e}:finished`,r)}_updateMsg(e){const t=this.messages.findIndex(t=>t.id===e.id);-1!==t&&(this.messages[t]=e),this._saveMsgList()}_saveMsgList(){const e=this.getUnapprovedMsgs(),t=Object.keys(e).length;this.memStore.updateState({unapprovedPersonalMsgs:e,unapprovedPersonalMsgCount:t}),this.emit("updateBadge")}normalizeMsgData(e){try{const t=o.stripHexPrefix(e);if(t.match(c))return o.addHexPrefix(t)}catch(e){u.debug("Message was not hex encoded, interpreting as utf8.")}return o.bufferToHex(r.from(e,"utf8"))}}}).call(this,e("buffer").Buffer)},{"./random-id":61,buffer:348,"eth-json-rpc-errors":472,"ethereumjs-util":555,events:349,loglevel:827,"obs-store":844}],61:[function(e,t,r){"use strict";const n=Number.MAX_SAFE_INTEGER;let i=Math.round(Math.random()*n);t.exports=function(){return i%=n,i++}},{}],62:[function(e,t,r){"use strict";const n=e("./extractEthjsErrorMessage");t.exports=function({sentry:e,txMeta:t}){const r="Transaction Failed: "+n(t.err.message);e.captureMessage(r,{extra:{txMeta:t}})}},{"./extractEthjsErrorMessage":50}],63:[function(e,t,r){"use strict";const n=e("eth-keyring-controller"),i=e("loglevel"),o={verifyAccounts:(e,t)=>new Promise((r,o)=>{if(!e||e.length<1)return o(new Error("No created accounts defined."));new(new n({}).getKeyringClassForType("HD Key Tree"))({mnemonic:t,numberOfAccounts:e.length}).getAccounts().then(t=>{if(i.debug("Created accounts: "+JSON.stringify(e)),i.debug("Restored accounts: "+JSON.stringify(t)),t.length!==e.length)return o(new Error("Wrong number of accounts"));for(let r=0;r{n=!0}),console.log("Injecting MetaMask Mesh testing client"),document.head.appendChild(e),{submitMeshMetricsEntry:function(r){if(!n)return;e.contentWindow.postMessage(r,t)}}}},{}],67:[function(e,t,r){(function(r){"use strict";const n=e("@sentry/browser"),i=r.env.METAMASK_DEBUG,o=e("./extractEthjsErrorMessage"),a="https://3567c198f8a8412082d32655da2961d0@sentry.io/273505",s="https://f59f3dd640d2429d9d0e2445a87ea8e1@sentry.io/273496";function c(e){const t=e.split(location.origin)[1];return t?`metamask${t}`:e}t.exports=function(e){const{release:t,getState:r}=e;let u;const f=Boolean(window.chrome.ipcRenderer);i?(console.log("Setting up Sentry Remote Error Reporting: SENTRY_DSN_DEV"),u=s):(console.log("Setting up Sentry Remote Error Reporting: SENTRY_DSN_PROD"),u=a);return n.init({dsn:u,debug:i,release:t,beforeSend:e=>(function(e){try{if(function(e){!function(e,t){"string"==typeof e.message&&(e.message=t(e.message));e.exception&&e.exception.values&&e.exception.values.forEach(e=>{"string"==typeof e.value&&(e.value=t(e.value))})}(e,e=>(0===(e=o(e)).indexOf("Transaction Failed: known transaction")&&(e="Transaction Failed: known transaction"),e))}(e),function(e){e.request.url=c(e.request.url),e.exception&&e.exception.values&&e.exception.values.forEach(e=>{e.stacktrace.frames.forEach(e=>{e.filename=c(e.filename)})})}(e),r){const t=r();e.extra.appState=t}}catch(e){console.warn(e)}return e})(e)}),n.configureScope(e=>{e.setExtra("isBrave",f)}),n}}).call(this,e("_process"))},{"./extractEthjsErrorMessage":50,"@sentry/browser":118,_process:898}],68:[function(e,t,r){"use strict";const n=e("through2"),i=e("obj-multiplex"),o=e("pump");t.exports={jsonParseStream:function(){return n.obj((function(e,t,r){this.push(JSON.parse(e)),r()}))},jsonStringifyStream:function(){return n.obj((function(e,t,r){this.push(JSON.stringify(e)),r()}))},setupMultiplex:function(e){const t=new i;return o(e,t,e,e=>{e&&console.error(e)}),t}}},{"obj-multiplex":843,pump:908,through2:1302}],69:[function(e,t,r){"use strict";const n=e("events"),i=e("obs-store"),o=e("./random-id"),a=e("assert"),{errors:s}=e("eth-json-rpc-errors"),c=e("eth-sig-util"),u=e("loglevel"),f=e("jsonschema");t.exports=class extends n{constructor({networkController:e}){super(),this.networkController=e,this.memStore=new i({unapprovedTypedMessages:{},unapprovedTypedMessagesCount:0}),this.messages=[]}get unapprovedTypedMessagesCount(){return Object.keys(this.getUnapprovedMsgs()).length}getUnapprovedMsgs(){return this.messages.filter(e=>"unapproved"===e.status).reduce((e,t)=>(e[t.id]=t,e),{})}addUnapprovedMessageAsync(e,t,r){return new Promise((n,i)=>{const o=this.addUnapprovedMessage(e,t,r);this.once(`${o}:finished`,t=>{switch(t.status){case"signed":return n(t.rawSig);case"rejected":return i(s.eth.userRejectedRequest("MetaMask Message Signature: User denied message signature."));case"errored":return i(new Error(`MetaMask Message Signature: ${t.error}`));default:return i(new Error(`MetaMask Message Signature: Unknown problem: ${JSON.stringify(e)}`))}})})}addUnapprovedMessage(e,t,r){e.version=r,this.validateParams(e),t&&(e.origin=t.origin),u.debug(`TypedMessageManager addUnapprovedMessage: ${JSON.stringify(e)}`);var n=(new Date).getTime(),i=o(),a={id:i,msgParams:e,time:n,status:"unapproved",type:"eth_signTypedData"};return this.addMsg(a),this.emit("update"),i}validateParams(e){switch(e.version){case"V1":a.equal(typeof e,"object","Params should ben an object."),a.ok("data"in e,"Params must include a data field."),a.ok("from"in e,"Params must include a from field."),a.ok(Array.isArray(e.data),"Data should be an array."),a.equal(typeof e.from,"string","From field must be a string."),a.doesNotThrow(()=>{c.typedSignatureHash(e.data)},"Expected EIP712 typed data");break;case"V3":case"V4":let t;a.equal(typeof e,"object","Params should be an object."),a.ok("data"in e,"Params must include a data field."),a.ok("from"in e,"Params must include a from field."),a.equal(typeof e.from,"string","From field must be a string."),a.equal(typeof e.data,"string","Data must be passed as a valid JSON string."),a.doesNotThrow(()=>{t=JSON.parse(e.data)},"Data must be passed as a valid JSON string.");const r=f.validate(t,c.TYPED_MESSAGE_SCHEMA);a.ok(t.primaryType in t.types,`Primary type of "${t.primaryType}" has no type definition.`),a.equal(r.errors.length,0,"Data must conform to EIP-712 schema. See https://git.io/fNtcx.");const n=t.domain.chainId,i=parseInt(this.networkController.getNetworkState());n&&a.equal(n,i,`Provided chainId (${n}) must match the active chainId (${i})`)}}addMsg(e){this.messages.push(e),this._saveMsgList()}getMsg(e){return this.messages.find(t=>t.id===e)}approveMessage(e){return this.setMsgStatusApproved(e.metamaskId),this.prepMsgForSigning(e)}setMsgStatusApproved(e){this._setMsgStatus(e,"approved")}setMsgStatusSigned(e,t){const r=this.getMsg(e);r.rawSig=t,this._updateMsg(r),this._setMsgStatus(e,"signed")}prepMsgForSigning(e){return delete e.metamaskId,delete e.version,Promise.resolve(e)}rejectMsg(e){this._setMsgStatus(e,"rejected")}errorMessage(e,t){const r=this.getMsg(e);r.error=t,this._updateMsg(r),this._setMsgStatus(e,"errored")}_setMsgStatus(e,t){const r=this.getMsg(e);if(!r)throw new Error('TypedMessageManager - Message not found for id: "${msgId}".');r.status=t,this._updateMsg(r),this.emit(`${e}:${t}`,r),"rejected"!==t&&"signed"!==t&&"errored"!==t||this.emit(`${e}:finished`,r)}_updateMsg(e){const t=this.messages.findIndex(t=>t.id===e.id);-1!==t&&(this.messages[t]=e),this._saveMsgList()}_saveMsgList(){const e=this.getUnapprovedMsgs(),t=Object.keys(e).length;this.memStore.updateState({unapprovedTypedMessages:e,unapprovedTypedMessagesCount:t}),this.emit("updateBadge")}}},{"./random-id":61,assert:202,"eth-json-rpc-errors":472,"eth-sig-util":534,events:349,jsonschema:787,loglevel:827,"obs-store":844}],70:[function(e,t,r){"use strict";const n=e("ethereumjs-util"),i=e("assert"),o=e("bn.js"),{ENVIRONMENT_TYPE_POPUP:a,ENVIRONMENT_TYPE_NOTIFICATION:s,ENVIRONMENT_TYPE_FULLSCREEN:c,ENVIRONMENT_TYPE_BACKGROUND:u,PLATFORM_FIREFOX:f,PLATFORM_OPERA:l,PLATFORM_CHROME:h,PLATFORM_EDGE:d,PLATFORM_BRAVE:p}=e("./enums");function m(e){return new o(n.stripHexPrefix(e),16)}t.exports={removeListeners:function(e,t){Object.keys(e).forEach(r=>{t.removeListener(r,e[r])})},applyListeners:function(e,t){Object.keys(e).forEach(r=>{t.on(r,e[r])})},getPlatform:e=>{const t=navigator.userAgent;return-1!==t.search("Firefox")?f:window&&window.chrome&&window.chrome.ipcRenderer?p:-1!==t.search("Edge")?d:-1!==t.search("OPR")?l:h},getStack:function(){return new Error("Stack trace generator - not an error").stack},getEnvironmentType:(e=window.location.href)=>{const t=new URL(e);return"/popup.html"===t.pathname?a:"/home.html"===t.pathname?c:"/notification.html"===t.pathname?s:u},sufficientBalance:function(e,t){i.equal(typeof t,"string","sufficientBalance - hexBalance is not a hex string"),i.equal(t.slice(0,2),"0x","sufficientBalance - hexBalance is not a hex string");const r=m(t),n=m(e.value),o=m(e.gas),a=m(e.gasPrice),s=n.add(o.mul(a));return r.gte(s)},hexToBn:m,bnToHex:function(e){return n.addHexPrefix(e.toString(16))},BnMultiplyByFraction:function(e,t,r){const n=new o(t),i=new o(r);return e.mul(n).div(i)},getRandomArrayItem:function(e){return e[Math.floor(Math.random()*e.length)]}}},{"./enums":49,assert:202,"bn.js":312,"ethereumjs-util":555}],71:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;tthis.setLocked()}),this.currencyRateController=new se(void 0,t.CurrencyController),this.infuraController=new C({initState:t.InfuraController}),this.infuraController.scheduleInfuraNetworkCheck(),this.phishingController=new ue,this.initializeProvider(),this.provider=this.networkController.getProviderAndBlockTracker().provider,this.blockTracker=this.networkController.getProviderAndBlockTracker().blockTracker,this.tokenRatesController=new L({currency:this.currencyRateController,preferences:this.preferencesController.store}),this.recentBlocksController=new O({blockTracker:this.blockTracker,provider:this.provider,networkController:this.networkController}),this.incomingTransactionsController=new P({blockTracker:this.blockTracker,networkController:this.networkController,preferencesController:this.preferencesController,initState:t.IncomingTransactionsController}),this.accountTracker=new p({provider:this.provider,blockTracker:this.blockTracker,network:this.networkController}),this.on("controllerConnectionChanged",e=>{e>0?(this.accountTracker.start(),this.incomingTransactionsController.start()):(this.accountTracker.stop(),this.incomingTransactionsController.stop())}),this.cachedBalancesController=new j({accountTracker:this.accountTracker,getNetwork:this.networkController.getNetworkState.bind(this.networkController),initState:t.CachedBalancesController}),this.onboardingController=new M({initState:t.OnboardingController}),this.networkController.on("networkDidChange",()=>{this.accountTracker._updateAccounts()});const r=[X,ee];this.keyringController=new S({keyringTypes:r,initState:t.KeyringController,getNetwork:this.networkController.getNetworkState.bind(this.networkController),encryptor:e.encryptor||void 0}),this.keyringController.memStore.subscribe(e=>this._onKeyringControllerUpdate(e)),this.detectTokensController=new U({preferences:this.preferencesController,network:this.networkController,keyringMemStore:this.keyringController.memStore}),this.addressBookController=new ae(void 0,t.AddressBookController),this.threeBoxController=new B({preferencesController:this.preferencesController,addressBookController:this.addressBookController,keyringController:this.keyringController,initState:t.ThreeBoxController,getKeyringControllerState:this.keyringController.memStore.getState.bind(this.keyringController.memStore),version:G}),this.txController=new R({initState:t.TransactionController||t.TransactionManager,networkStore:this.networkController.networkStore,preferencesStore:this.preferencesController.store,txHistoryLimit:40,getNetwork:this.networkController.getNetworkState.bind(this),signTransaction:this.keyringController.signTransaction.bind(this.keyringController),provider:this.provider,blockTracker:this.blockTracker,getGasPrice:this.getGasPrice.bind(this)}),this.txController.on("newUnapprovedTx",()=>e.showUnapprovedTx()),this.txController.on("tx:status-update",async(e,t)=>{if("confirmed"===t||"failed"===t){const t=this.txController.txStateManager.getTx(e);this.platform.showTransactionNotification(t);const{txReceipt:r}=t,n=this.preferencesController.getParticipateInMetaMetrics();if(r&&"0x0"===r.status&&n){const e=await this.getState();fe(e,{customVariables:{errorMessage:t.simulationFails.reason},eventOpts:{category:"backend",action:"Transactions",name:"On Chain Failure"}})}}}),this.networkController.on("networkDidChange",()=>{this.setCurrentCurrency(this.currencyRateController.state.currentCurrency,(function(){}))}),this.shapeshiftController=new ce(void 0,t.ShapeShiftController),this.networkController.lookupNetwork(),this.messageManager=new I,this.personalMessageManager=new N,this.typedMessageManager=new D({networkController:this.networkController}),this.on("update",e=>{this.isClientOpenAndUnlocked=e.isUnlocked&&this._isClientOpen}),this.providerApprovalController=new F({closePopup:e.closePopup,initState:t.ProviderApprovalController,keyringController:this.keyringController,openPopup:e.openPopup,preferencesController:this.preferencesController}),this.abTestController=new z({initState:t.ABTestController}),this.store.updateStructure({AppStateController:this.appStateController.store,TransactionController:this.txController.store,KeyringController:this.keyringController.store,PreferencesController:this.preferencesController.store,AddressBookController:this.addressBookController,CurrencyController:this.currencyRateController,ShapeShiftController:this.shapeshiftController,NetworkController:this.networkController.store,InfuraController:this.infuraController.store,CachedBalancesController:this.cachedBalancesController.store,OnboardingController:this.onboardingController.store,ProviderApprovalController:this.providerApprovalController.store,IncomingTransactionsController:this.incomingTransactionsController.store,ThreeBoxController:this.threeBoxController.store,ABTestController:this.abTestController.store}),this.memStore=new l(null,{AppStateController:this.appStateController.store,NetworkController:this.networkController.store,AccountTracker:this.accountTracker.store,TxController:this.txController.memStore,CachedBalancesController:this.cachedBalancesController.store,TokenRatesController:this.tokenRatesController.store,MessageManager:this.messageManager.memStore,PersonalMessageManager:this.personalMessageManager.memStore,TypesMessageManager:this.typedMessageManager.memStore,KeyringController:this.keyringController.memStore,PreferencesController:this.preferencesController.store,RecentBlocksController:this.recentBlocksController.store,AddressBookController:this.addressBookController,CurrencyController:this.currencyRateController,ShapeshiftController:this.shapeshiftController,InfuraController:this.infuraController.store,OnboardingController:this.onboardingController.store,ProviderApprovalController:this.providerApprovalController.store,ProviderApprovalControllerMemStore:this.providerApprovalController.memStore,IncomingTransactionsController:this.incomingTransactionsController.store,ThreeBoxController:this.threeBoxController.store,ABTestController:this.abTestController.store}),this.memStore.subscribe(this.sendUpdate.bind(this))}initializeProvider(){const e={static:{eth_syncing:!1,web3_clientVersion:`MetaMask/v${G}`},version:G,getAccounts:async({origin:e})=>{const t=this.providerApprovalController.shouldExposeAccounts(e);if("MetaMask"!==e&&!t)return[];const r=this.keyringController.memStore.getState().isUnlocked,n=this.preferencesController.getSelectedAddress();return r&&n?[n]:[]},processTransaction:this.newUnapprovedTransaction.bind(this),processEthSignMessage:this.newUnsignedMessage.bind(this),processTypedMessage:this.newUnsignedTypedMessage.bind(this),processTypedMessageV3:this.newUnsignedTypedMessage.bind(this),processTypedMessageV4:this.newUnsignedTypedMessage.bind(this),processPersonalMessage:this.newUnsignedPersonalMessage.bind(this),getPendingNonce:this.getPendingNonce.bind(this)};return this.networkController.initializeProvider(e)}createPublicConfigStore({checkIsEnabled:e}){const t=new f;function r(r){const n=function({isUnlocked:t,selectedAddress:r,network:n,completedOnboarding:i,provider:o}){const a=e();return{isUnlocked:t,isEnabled:a,selectedAddress:t&&a?r:null,networkVersion:n,onboardingcomplete:i,chainId:V({network:n,provider:o})}}(r);t.putState(n)}return this.on("update",r),r(this.getState()),t.destroy=()=>{this.removeEventListener&&this.removeEventListener("update",r)},t}getState(){return o({},{isInitialized:!!this.keyringController.store.getState().vault},{},this.memStore.getFlatState())}getApi(){const e=this.keyringController,t=this.preferencesController,r=this.txController,n=this.networkController,i=this.providerApprovalController,o=this.onboardingController,a=this.threeBoxController,s=this.abTestController;return{getState:e=>e(null,this.getState()),setCurrentCurrency:this.setCurrentCurrency.bind(this),setUseBlockie:this.setUseBlockie.bind(this),setUseNonceField:this.setUseNonceField.bind(this),setParticipateInMetaMetrics:this.setParticipateInMetaMetrics.bind(this),setMetaMetricsSendCount:this.setMetaMetricsSendCount.bind(this),setFirstTimeFlowType:this.setFirstTimeFlowType.bind(this),setCurrentLocale:this.setCurrentLocale.bind(this),markAccountsFound:this.markAccountsFound.bind(this),markPasswordForgotten:this.markPasswordForgotten.bind(this),unMarkPasswordForgotten:this.unMarkPasswordForgotten.bind(this),getGasPrice:e=>e(null,this.getGasPrice()),buyEth:this.buyEth.bind(this),createShapeShiftTx:this.createShapeShiftTx.bind(this),addNewAccount:q(this.addNewAccount,this),verifySeedPhrase:q(this.verifySeedPhrase,this),resetAccount:q(this.resetAccount,this),removeAccount:q(this.removeAccount,this),importAccountWithStrategy:q(this.importAccountWithStrategy,this),connectHardware:q(this.connectHardware,this),forgetDevice:q(this.forgetDevice,this),checkHardwareStatus:q(this.checkHardwareStatus,this),unlockHardwareWalletAccount:q(this.unlockHardwareWalletAccount,this),fetchInfoToSync:q(this.fetchInfoToSync,this),submitPassword:q(this.submitPassword,this),setProviderType:q(n.setProviderType,n),setCustomRpc:q(this.setCustomRpc,this),updateAndSetCustomRpc:q(this.updateAndSetCustomRpc,this),delCustomRpc:q(this.delCustomRpc,this),setSelectedAddress:q(t.setSelectedAddress,t),addToken:q(t.addToken,t),removeToken:q(t.removeToken,t),removeSuggestedTokens:q(t.removeSuggestedTokens,t),setCurrentAccountTab:q(t.setCurrentAccountTab,t),setAccountLabel:q(t.setAccountLabel,t),setFeatureFlag:q(t.setFeatureFlag,t),setPreference:q(t.setPreference,t),completeOnboarding:q(t.completeOnboarding,t),addKnownMethodData:q(t.addKnownMethodData,t),unsetMigratedPrivacyMode:q(t.unsetMigratedPrivacyMode,t),whitelistPhishingDomain:this.whitelistPhishingDomain.bind(this),setAddressBook:q(this.addressBookController.set,this.addressBookController),removeFromAddressBook:this.addressBookController.delete.bind(this.addressBookController),setLastActiveTime:q(this.appStateController.setLastActiveTime,this.appStateController),setLocked:q(this.setLocked,this),createNewVaultAndKeychain:q(this.createNewVaultAndKeychain,this),createNewVaultAndRestore:q(this.createNewVaultAndRestore,this),addNewKeyring:q(e.addNewKeyring,e),exportAccount:q(e.exportAccount,e),cancelTransaction:q(r.cancelTransaction,r),updateTransaction:q(r.updateTransaction,r),updateAndApproveTransaction:q(r.updateAndApproveTransaction,r),retryTransaction:q(this.retryTransaction,this),createCancelTransaction:q(this.createCancelTransaction,this),createSpeedUpTransaction:q(this.createSpeedUpTransaction,this),getFilteredTxList:q(r.getFilteredTxList,r),isNonceTaken:q(r.isNonceTaken,r),estimateGas:q(this.estimateGas,this),getPendingNonce:q(this.getPendingNonce,this),getNextNonce:q(this.getNextNonce,this),signMessage:q(this.signMessage,this),cancelMessage:this.cancelMessage.bind(this),signPersonalMessage:q(this.signPersonalMessage,this),cancelPersonalMessage:this.cancelPersonalMessage.bind(this),signTypedMessage:q(this.signTypedMessage,this),cancelTypedMessage:this.cancelTypedMessage.bind(this),approveProviderRequestByOrigin:i.approveProviderRequestByOrigin.bind(i),rejectProviderRequestByOrigin:i.rejectProviderRequestByOrigin.bind(i),clearApprovedOrigins:i.clearApprovedOrigins.bind(i),setSeedPhraseBackedUp:q(o.setSeedPhraseBackedUp,o),setThreeBoxSyncingPermission:q(a.setThreeBoxSyncingPermission,a),restoreFromThreeBox:q(a.restoreFromThreeBox,a),setShowRestorePromptToFalse:q(a.setShowRestorePromptToFalse,a),getThreeBoxLastUpdated:q(a.getLastUpdated,a),turnThreeBoxSyncingOn:q(a.turnThreeBoxSyncingOn,a),initializeThreeBox:q(this.initializeThreeBox,this),getAssignedABTestGroupName:q(s.getAssignedABTestGroupName,s)}}async createNewVaultAndKeychain(e){const t=await this.createVaultMutex.acquire();try{let r;if((await this.keyringController.getAccounts()).length>0)r=await this.keyringController.fullUpdate();else{r=await this.keyringController.createNewVaultAndKeychain(e);const t=await this.keyringController.getAccounts();this.preferencesController.setAddresses(t),this.selectFirstIdentity()}return t(),r}catch(e){throw t(),e}}async createNewVaultAndRestore(e,t){const r=await this.createVaultMutex.acquire();try{let n,i;const o=this.keyringController;this.preferencesController.setAddresses([]);const a=await o.createNewVaultAndRestore(e,t),s=new re(this.provider);n=await o.getAccounts(),i=await this.getBalance(n[n.length-1],s);const c=o.getKeyringsByType("HD Key Tree")[0];if(!c)throw new Error("MetamaskController - No HD Key Tree found");for(;"0x0"!==i;)await o.addNewAccount(c),n=await o.getAccounts(),i=await this.getBalance(n[n.length-1],s);return this.preferencesController.setAddresses(n),this.selectFirstIdentity(),r(),a}catch(e){throw r(),e}}getBalance(e,t){return new Promise((r,n)=>{const i=this.accountTracker.store.getState().accounts[e];i&&i.balance?r(i.balance):t.getBalance(e,(e,t)=>{e?(n(e),Z.error(e)):r(t||"0x0")})})}async fetchInfoToSync(){const{accountTokens:e,currentLocale:t,frequentRpcList:r,identities:n,selectedAddress:i,tokens:o}=this.preferencesController.store.getState(),a={};Object.keys(e).forEach(t=>{const r=ne.toChecksumAddress(t);a[r]={},Object.keys(e[t]).forEach(n=>a[r][n]="mainnet"!==n?e[t][n]:e[t][n].filter(({address:e})=>{const t=ne.toChecksumAddress(e);return!oe[t]||oe[t].erc20}))});const s={accountTokens:a,currentLocale:t,frequentRpcList:r,identities:n,selectedAddress:i,tokens:o},c=this.keyringController.getKeyringsByType("HD Key Tree")[0],u=await c.getAccounts(),f={hd:u.filter((e,t)=>u.indexOf(e)===t).map(e=>ne.toChecksumAddress(e)),simpleKeyPair:[],ledger:[],trezor:[]};let l=this.txController.store.getState().transactions;return l=l.filter(e=>{const t=ne.toChecksumAddress(e.txParams.from);return f.hd.includes(t)}),{accounts:f,preferences:s,transactions:l,network:this.networkController.store.getState()}}async submitPassword(e){await this.keyringController.submitPassword(e);const t=await this.keyringController.getAccounts(),r=this.keyringController.keyrings.filter(e=>"Simple Key Pair"!==e.type);r.length>1&&this.diagnostics&&await this.diagnostics.reportMultipleKeyrings(r),await this.preferencesController.syncAddresses(t),await this.txController.pendingTxTracker.updatePendingTxs();try{const e=this.threeBoxController.getThreeBoxSyncingState();e&&!this.threeBoxController.box?(this.threeBoxController.init(),this.threeBoxController.turnThreeBoxSyncingOn()):e&&this.threeBoxController.box&&this.threeBoxController.turnThreeBoxSyncingOn()}catch(e){Z.error(e)}return this.keyringController.fullUpdate()}selectFirstIdentity(){const{identities:e}=this.preferencesController.store.getState(),t=Object.keys(e)[0];this.preferencesController.setSelectedAddress(t)}async getKeyringForDevice(e,t=null){let r=null;switch(e){case"trezor":r=X.type;break;case"ledger":r=ee.type;break;default:throw new Error("MetamaskController:getKeyringForDevice - Unknown device")}let n=await this.keyringController.getKeyringsByType(r)[0];return n||(n=await this.keyringController.addNewKeyring(r)),t&&n.setHdPath&&n.setHdPath(t),n.network=this.networkController.getProviderConfig().type,n}async connectHardware(e,t,r){const n=await this.getKeyringForDevice(e,r);let i=[];switch(t){case-1:i=await n.getPreviousPage();break;case 1:i=await n.getNextPage();break;default:i=await n.getFirstPage()}const o=await this.keyringController.getAccounts(),a=[...new Set(o.concat(i.map(e=>e.address.toLowerCase())))];return this.accountTracker.syncWithAddresses(a),i}async checkHardwareStatus(e,t){return(await this.getKeyringForDevice(e,t)).isUnlocked()}async forgetDevice(e){return(await this.getKeyringForDevice(e)).forgetDevice(),!0}async unlockHardwareWalletAccount(e,t,r){const n=await this.getKeyringForDevice(t,r);n.setAccountToUnlock(e);const i=await this.keyringController.getAccounts(),a=await this.keyringController.addNewAccount(n),s=await this.keyringController.getAccounts();this.preferencesController.setAddresses(s),s.forEach(r=>{i.includes(r)||(this.preferencesController.setAccountLabel(r,`${t[0].toUpperCase()}${t.slice(1)} ${parseInt(e,10)+1}`),this.preferencesController.setSelectedAddress(r))});const{identities:c}=this.preferencesController.store.getState();return o({},a,{identities:c})}async addNewAccount(){const e=this.keyringController.getKeyringsByType("HD Key Tree")[0];if(!e)throw new Error("MetamaskController - No HD Key Tree found");const t=this.keyringController,r=await t.getAccounts(),n=await t.addNewAccount(e),i=await t.getAccounts();await this.verifySeedPhrase(),this.preferencesController.setAddresses(i),i.forEach(e=>{r.includes(e)||this.preferencesController.setSelectedAddress(e)});const{identities:a}=this.preferencesController.store.getState();return o({},n,{identities:a})}async verifySeedPhrase(){const e=this.keyringController.getKeyringsByType("HD Key Tree")[0];if(!e)throw new Error("MetamaskController - No HD Key Tree found");const t=(await e.serialize()).mnemonic,r=await e.getAccounts();if(r.length<1)throw new Error("MetamaskController - No accounts found");try{return await Y.verifyAccounts(r,t),t}catch(e){throw Z.error(e.message),e}}async resetAccount(){const e=this.preferencesController.getSelectedAddress();return this.txController.wipeTransactions(e),this.networkController.resetConnection(),e}async removeAccount(e){return this.preferencesController.removeAddress(e),this.accountTracker.removeAccount([e]),await this.keyringController.removeAccount(e),e}async importAccountWithStrategy(e,t){const r=await H.importAccount(e,t),n=await this.keyringController.addNewKeyring("Simple Key Pair",[r]),i=await n.getAccounts(),o=await this.keyringController.getAccounts();this.preferencesController.setAddresses(o),await this.preferencesController.setSelectedAddress(i[0])}async newUnapprovedTransaction(e,t){return await this.txController.newUnapprovedTransaction(e,t)}newUnsignedMessage(e,t){const r=this.messageManager.addUnapprovedMessageAsync(e,t);return this.sendUpdate(),this.opts.showUnconfirmedMessage(),r}signMessage(e){Z.info("MetaMaskController - signMessage");const t=e.metamaskId;return this.messageManager.approveMessage(e).then(e=>this.keyringController.signMessage(e)).then(e=>(this.messageManager.setMsgStatusSigned(t,e),this.getState()))}cancelMessage(e,t){this.messageManager.rejectMsg(e),t&&"function"==typeof t&&t(null,this.getState())}async newUnsignedPersonalMessage(e,t){const r=this.personalMessageManager.addUnapprovedMessageAsync(e,t);return this.sendUpdate(),this.opts.showUnconfirmedMessage(),r}signPersonalMessage(e){Z.info("MetaMaskController - signPersonalMessage");const t=e.metamaskId;return this.personalMessageManager.approveMessage(e).then(e=>this.keyringController.signPersonalMessage(e)).then(e=>(this.personalMessageManager.setMsgStatusSigned(t,e),this.getState()))}cancelPersonalMessage(e,t){this.personalMessageManager.rejectMsg(e),t&&"function"==typeof t&&t(null,this.getState())}newUnsignedTypedMessage(e,t,r){const n=this.typedMessageManager.addUnapprovedMessageAsync(e,t,r);return this.sendUpdate(),this.opts.showUnconfirmedMessage(),n}async signTypedMessage(e){Z.info("MetaMaskController - eth_signTypedData");const t=e.metamaskId,r=e.version;try{const n=await this.typedMessageManager.approveMessage(e),i=ie.normalize(n.from),o=await this.keyringController.getKeyringForAccount(i);let a;if(te.includes(o.type))a=await o.signTypedData(i,n.data);else{const e=o._getWalletForAccount(i),t=ne.toBuffer(e.getPrivateKey());switch(r){case"V1":a=ie.signTypedDataLegacy(t,{data:n.data});break;case"V3":a=ie.signTypedData(t,{data:JSON.parse(n.data)});break;case"V4":a=ie.signTypedData_v4(t,{data:JSON.parse(n.data)})}}return this.typedMessageManager.setMsgStatusSigned(t,a),this.getState()}catch(e){Z.info("MetaMaskController - eth_signTypedData failed.",e),this.typedMessageManager.errorMessage(t,e)}}cancelTypedMessage(e,t){this.typedMessageManager.rejectMsg(e),t&&"function"==typeof t&&t(null,this.getState())}restoreOldVaultAccounts(e){const{serialized:t}=e;return this.keyringController.restoreKeyring(t).then(()=>e)}markAccountsFound(e){e(null,this.getState())}async retryTransaction(e,t){return await this.txController.retryTransaction(e,t),await this.getState()}async createCancelTransaction(e,t){try{return await this.txController.createCancelTransaction(e,t),await this.getState()}catch(e){throw e}}async createSpeedUpTransaction(e,t){return await this.txController.createSpeedUpTransaction(e,t),await this.getState()}estimateGas(e){return new Promise((t,r)=>this.txController.txGasUtil.query.estimateGas(e,(e,n)=>e?r(e):t(n)))}markPasswordForgotten(e){this.preferencesController.setPasswordForgotten(!0),this.sendUpdate(),e()}unMarkPasswordForgotten(e){this.preferencesController.setPasswordForgotten(!1),this.sendUpdate(),e()}setupUntrustedCommunication(e,t){if(this.phishingController.test(t))return Z.debug("MetaMask - sending phishing warning for",t),void this.sendPhishingWarning(e,t);const r=k(e),n=this.setupPublicApi(r.createStream("publicApi"),t);this.setupProviderConnection(r.createStream("provider"),t,n),this.setupPublicConfig(r.createStream("publicConfig"),t)}setupTrustedCommunication(e,t){const r=k(e);this.setupControllerConnection(r.createStream("controller")),this.setupProviderConnection(r.createStream("provider"),t)}sendPhishingWarning(e,t){k(e).createStream("phishing").write({hostname:t})}setupControllerConnection(e){const t=this.getApi(),r=c(t);this.activeControllerConnections++,this.emit("controllerConnectionChanged",this.activeControllerConnections),s(e,r,e,e=>{this.activeControllerConnections--,this.emit("controllerConnectionChanged",this.activeControllerConnections),e&&Z.error(e)}),r.on("remote",e=>{const t=t=>e.sendUpdate(t);this.on("update",t),r.on("end",()=>this.removeListener("update",t))})}setupProviderConnection(e,t,r){const n=r&&r.getSiteMetadata,i=this.setupProviderEngine(t,n),o=g({engine:i});s(e,o,e,e=>{i._middleware.forEach(e=>{e.destroy&&"function"==typeof e.destroy&&e.destroy()}),e&&Z.error(e)})}setupProviderEngine(e,t){const r=new m,n=this.provider,i=this.blockTracker,o=b({provider:n,blockTracker:i}),a=v({provider:n,blockTracker:i});return a.events.on("notification",e=>r.emit("notification",e)),r.push(w({origin:e})),r.push(x({origin:e})),r.push(o),r.push(a.middleware),r.push(this.preferencesController.requestWatchAsset.bind(this.preferencesController)),r.push(this.providerApprovalController.createMiddleware({origin:e,getSiteMetadata:t})),r.push(_(n)),r}setupPublicConfig(e,t){const r=this.createPublicConfigStore({checkIsEnabled:()=>this.providerApprovalController.shouldExposeAccounts(t)}),n=d(r);s(n,e,e=>{r.destroy(),n.destroy(),e&&Z.error(e)})}setupPublicApi(e){const t=c();s(e,t,e,e=>{e&&Z.error(e)});const r=h(t);return{getSiteMetadata:async()=>{const e=await r();return await u(e.getSiteMetadata)()}}}async _onKeyringControllerUpdate(e){const{isUnlocked:t,keyrings:r}=e,n=r.reduce((e,{accounts:t})=>e.concat(t),[]);if(n.length&&(this.preferencesController.addAddresses(n),this.accountTracker.syncWithAddresses(n),!t)){const e=this.preferencesController.getSelectedAddress();if(!n.includes(e)){const e=n[0];await this.preferencesController.setSelectedAddress(e)}}}privateSendUpdate(){this.emit("update",this.getState())}getGasPrice(){const{recentBlocksController:e}=this,{recentBlocks:t}=e.store.getState();if(0===t.length)return"0x"+J.toString(16);const r=t.map(e=>!e.gasPrices||e.gasPrices.length<1?J:e.gasPrices.map(e=>e.substr(2)).map(e=>new $(e,16)).sort((e,t)=>e.gt(t)?1:-1)[0]).map(e=>e.div(J).toNumber()),n=Q(65,r);return"0x"+new $(n).mul(J).toString(16)}async getPendingNonce(e){const{nonceDetails:t,releaseLock:r}=await this.txController.nonceTracker.getNonceLock(e),n=t.params.highestSuggested;return r(),n}async getNextNonce(e){let t;try{t=await this.txController.nonceTracker.getNonceLock(e)}finally{t.releaseLock()}return t.nextNonce}setCurrentCurrency(e,t){const{ticker:r}=this.networkController.getNetworkConfig();try{const n={nativeCurrency:r,currentCurrency:e};this.currencyRateController.update(n),this.currencyRateController.configure(n),t(null,this.currencyRateController.state)}catch(e){t(e)}}buyEth(e,t){t||(t="5");const r=this.networkController.getNetworkState(),n=K({network:r,address:e,amount:t});n&&this.platform.openWindow({url:n})}createShapeShiftTx(e,t){this.shapeshiftController.createTransaction(e,t)}async updateAndSetCustomRpc(e,t,r="ETH",n,i){return await this.preferencesController.updateRpc({rpcUrl:e,chainId:t,ticker:r,nickname:n,rpcPrefs:i}),this.networkController.setRpcTarget(e,t,r,n,i),e}async setCustomRpc(e,t,r="ETH",n="",i={}){const o=this.preferencesController.getFrequentRpcListDetail().find(t=>e===t.rpcUrl);return o?this.networkController.setRpcTarget(o.rpcUrl,o.chainId,o.ticker,o.nickname,i):(this.networkController.setRpcTarget(e,t,r,n,i),await this.preferencesController.addToFrequentRpcList(e,t,r,n,i)),e}async delCustomRpc(e){await this.preferencesController.removeFromFrequentRpcList(e)}async initializeThreeBox(){await this.threeBoxController.init()}setUseBlockie(e,t){try{this.preferencesController.setUseBlockie(e),t(null)}catch(e){t(e)}}setUseNonceField(e,t){try{this.preferencesController.setUseNonceField(e),t(null)}catch(e){t(e)}}setParticipateInMetaMetrics(e,t){try{t(null,this.preferencesController.setParticipateInMetaMetrics(e))}catch(e){t(e)}}setMetaMetricsSendCount(e,t){try{this.preferencesController.setMetaMetricsSendCount(e),t(null)}catch(e){t(e)}}setFirstTimeFlowType(e,t){try{this.preferencesController.setFirstTimeFlowType(e),t(null)}catch(e){t(e)}}setCurrentLocale(e,t){try{t(null,this.preferencesController.setCurrentLocale(e))}catch(e){t(e)}}recordFirstTimeInfo(e){"firstTimeInfo"in e||(e.firstTimeInfo={version:G,date:Date.now()})}set isClientOpen(e){this._isClientOpen=e,this.isClientOpenAndUnlocked=this.getState().isUnlocked&&e,this.detectTokensController.isOpen=e}set isClientOpenAndUnlocked(e){this.tokenRatesController.isActive=e}whitelistPhishingDomain(e){return this.phishingController.bypass(e)}setLocked(){return this.keyringController.setLocked()}}},{"../manifest.json":2,"./account-import-strategies":3,"./controllers/ab-test":5,"./controllers/app-state":6,"./controllers/cached-balances":7,"./controllers/detect-tokens":8,"./controllers/incoming-transactions":9,"./controllers/infura":10,"./controllers/network":17,"./controllers/onboarding":19,"./controllers/preferences":20,"./controllers/provider-approval":21,"./controllers/recent-blocks":22,"./controllers/threebox":23,"./controllers/token-rates":24,"./controllers/transactions":26,"./lib/ComposableObservableStore":36,"./lib/account-tracker":37,"./lib/backend-metametrics":38,"./lib/buy-eth-url":39,"./lib/createDnodeRemoteGetter":41,"./lib/createLoggerMiddleware":42,"./lib/createOriginMiddleware":43,"./lib/message-manager":56,"./lib/nodeify":58,"./lib/personal-message-manager":60,"./lib/seed-phrase-verifier":63,"./lib/select-chain-id":64,"./lib/stream-utils.js":68,"./lib/typed-message-manager":69,"@babel/runtime/helpers/defineProperty":113,"@babel/runtime/helpers/interopRequireDefault":115,"await-semaphore":203,debounce:421,dnode:442,"eth-contract-metadata":465,"eth-json-rpc-filters":483,"eth-json-rpc-filters/subscriptionManager":486,"eth-json-rpc-middleware/providerAsMiddleware":511,"eth-keyring-controller":517,"eth-ledger-bridge-keyring":525,"eth-query":533,"eth-sig-util":534,"eth-trezor-keyring":542,"ethereumjs-util":555,events:349,gaba:624,"json-rpc-engine":777,"json-rpc-middleware-stream/engineStream":779,loglevel:827,"obs-store":844,"obs-store/lib/asStream":845,percentile:892,pify:893,pump:908}],72:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:2,migrate:function(e){const t=n(e);t.meta.version=2;try{"etherscan"===t.data.config.provider.type&&(t.data.config.provider.type="rpc",t.data.config.provider.rpcTarget="https://rpc.metamask.io/")}catch(e){}return Promise.resolve(t)}}},{clone:358}],73:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:3,migrate:function(e){const t=n(e);t.meta.version=3;try{"https://rawtestrpc.metamask.io/"===t.data.config.provider.rpcTarget&&(t.data.config.provider.rpcTarget="https://testrpc.metamask.io/")}catch(e){}return Promise.resolve(t)}}},{clone:358}],74:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:4,migrate:function(e){const t=n(e);t.meta.version=4;try{if("rpc"!==t.data.config.provider.type)return Promise.resolve(t);switch(t.data.config.provider.rpcTarget){case"https://testrpc.metamask.io/":t.data.config.provider={type:"testnet"};break;case"https://rpc.metamask.io/":t.data.config.provider={type:"mainnet"}}}catch(e){}return Promise.resolve(t)}}},{clone:358}],75:[function(e,t,r){"use strict";const n=e("xtend"),i=e("clone");t.exports={version:5,migrate:function(e){const t=i(e);t.meta.version=5;try{const e=function(e){const t=e.config,r=n(e,{KeyringController:{vault:e.vault,selectedAccount:t.selectedAccount,walletNicknames:e.walletNicknames}});return delete r.vault,delete r.walletNicknames,delete r.config.selectedAccount,r}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #5"+e.stack)}return Promise.resolve(t)}}},{clone:358,xtend:1430}],76:[function(e,t,r){"use strict";const n=e("xtend"),i=e("clone");t.exports={version:6,migrate:function(e){const t=i(e);t.meta.version=6;try{const e=function(e){const t=e.KeyringController,r=n(e,{PreferencesController:{selectedAddress:t.selectedAccount}});return delete r.KeyringController.selectedAccount,r}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #6"+e.stack)}return Promise.resolve(t)}}},{clone:358,xtend:1430}],77:[function(e,t,r){"use strict";const n=e("xtend"),i=e("clone");t.exports={version:7,migrate:function(e){const t=i(e);t.meta.version=7;try{const e=function(e){const t=n(e,{TransactionManager:{transactions:e.transactions||[],gasMultiplier:e.gasMultiplier||1}});return delete t.transactions,delete t.gasMultiplier,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #7"+e.stack)}return Promise.resolve(t)}}},{clone:358,xtend:1430}],78:[function(e,t,r){"use strict";const n=e("xtend"),i=e("clone");t.exports={version:8,migrate:function(e){const t=i(e);t.meta.version=8;try{const e=function(e){const t=n(e,{NoticeController:{noticesList:e.noticesList||[]}});return delete t.noticesList,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #8"+e.stack)}return Promise.resolve(t)}}},{clone:358,xtend:1430}],79:[function(e,t,r){"use strict";const n=e("deep-extend"),i=e("clone");t.exports={version:9,migrate:function(e){const t=i(e);t.meta.version=9;try{const e=function(e){const t=n({},e,{CurrencyController:{currentCurrency:e.currentFiat||e.fiatCurrency||"USD",conversionRate:e.conversionRate,conversionDate:e.conversionDate}});return delete t.currentFiat,delete t.fiatCurrency,delete t.conversionRate,delete t.conversionDate,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #9"+e.stack)}return Promise.resolve(t)}}},{clone:358,"deep-extend":425}],80:[function(e,t,r){"use strict";const n=e("deep-extend"),i=e("clone");t.exports={version:10,migrate:function(e){const t=i(e);t.meta.version=10;try{const e=function(e){const t=n({},e,{ShapeShiftController:{shapeShiftTxList:e.shapeShiftTxList||[]}});return delete t.shapeShiftTxList,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #10"+e.stack)}return Promise.resolve(t)}}},{clone:358,"deep-extend":425}],81:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:11,migrate:function(e){const t=n(e);t.meta.version=11;try{const e=function(e){const t=e;return delete t.TOSHash,delete t.isDisclaimerConfirmed,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #11"+e.stack)}return Promise.resolve(t)}}},{clone:358}],82:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:12,migrate:function(e){const t=n(e);t.meta.version=12;try{const e=function(e){const t=e;return t.NoticeController.noticesList.forEach(e=>{e.read&&(e.body="")}),t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #12"+e.stack)}return Promise.resolve(t)}}},{clone:358}],83:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:13,migrate:function(e){const t=n(e);t.meta.version=13;try{const e=function(e){const t=e,{config:r}=t;r&&r.provider&&"testnet"===r.provider.type&&(t.config.provider.type="ropsten");return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #13"+e.stack)}return Promise.resolve(t)}}},{clone:358}],84:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:14,migrate:function(e){const t=n(e);t.meta.version=14;try{const e=function(e){const t=e;return t.NetworkController={},t.NetworkController.provider=t.config.provider,delete t.config.provider,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #14"+e.stack)}return Promise.resolve(t)}}},{clone:358}],85:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:15,migrate:function(e){const t=n(e);t.meta.version=15;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=r.transactions;t.TransactionController.transactions=e.map(e=>e.err?("Gave up submitting tx."===e.err.message&&(e.status="failed"),e):e)}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #15"+e.stack)}return Promise.resolve(t)}}},{clone:358}],86:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:16,migrate:function(e){const t=n(e);t.meta.version=16;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map(e=>e.err?("transaction with the same hash was already imported."===e.err&&(e.status="submitted",delete e.err),e):e)}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #16"+e.stack)}return Promise.resolve(t)}}},{clone:358}],87:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:17,migrate:function(e){const t=n(e);t.meta.version=17;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map(e=>"failed"===!e.status?e:(e.retryCount>0&&e.retryCount<2&&(e.status="submitted",delete e.err),e))}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #17"+e.stack)}return Promise.resolve(t)}}},{clone:358}],88:[function(e,t,r){"use strict";const n=e("clone"),i=e("../controllers/transactions/lib/tx-state-history-helper");t.exports={version:18,migrate:function(e){const t=n(e);t.meta.version=18;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map(e=>{if(!e.history||0===e.history.length){const t=i.snapshotFromTxMeta(e);return e.history=[t],e}const t=i.migrateFromSnapshotsToDiffs(e.history).filter(e=>!Array.isArray(e)||e.length>0);return e.history=t,e})}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #18"+e.stack)}return Promise.resolve(t)}}},{"../controllers/transactions/lib/tx-state-history-helper":29,clone:358}],89:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:19,migrate:function(e){const t=n(e);t.meta.version=19;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map((e,t,r)=>{if("submitted"!==e.status)return e;const n=function(e){const t=e.map(e=>{const t=e.txParams.nonce;return parseInt(t||"0x0",16)});return Math.max.apply(null,t)}(r.filter(e=>"confirmed"===e.status).filter(t=>t.txParams.from===e.txParams.from).filter(t=>t.metamaskNetworkId.from===e.metamaskNetworkId.from)),i=function(e,t){const r=e.map(e=>{const t=e.txParams.nonce;return parseInt(t,16)});let n=t;for(;r.includes(n);)n++;return n}(r.filter(e=>"submitted"===e.status).filter(t=>t.txParams.from===e.txParams.from).filter(t=>t.metamaskNetworkId.from===e.metamaskNetworkId.from),n),o=Math.max(i,n);return parseInt(e.txParams.nonce,16)>o+1&&(e.status="failed",e.err={message:"nonce too high",note:"migration 019 custom error"}),e})}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #19"+e.stack)}return Promise.resolve(t)}}},{clone:358}],90:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:20,migrate:function(e){const t=n(e);t.meta.version=20;try{const e=function(e){const t=e;"metamask"in t&&!("firstTimeInfo"in t.metamask)&&(t.metamask.firstTimeInfo={version:"3.12.0",date:Date.now()});return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #20"+e.stack)}return Promise.resolve(t)}}},{clone:358}],91:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:21,migrate:function(e){const t=n(e);t.meta.version=21;try{const e=function(e){const t=e;return delete t.BlacklistController,delete t.RecentBlocks,t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #21"+e.stack)}return Promise.resolve(t)}}},{clone:358}],92:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:22,migrate:function(e){const t=n(e);t.meta.version=22;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map(e=>"submitted"!==e.status||e.submittedTime?e:(e.submittedTime=(new Date).getTime(),e))}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #22"+e.stack)}return Promise.resolve(t)}}},{clone:358}],93:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:23,migrate:function(e){const t=n(e);t.meta.version=23;try{const e=function(e){const t=e,{TransactionController:r}=t;if(r&&r.transactions){const e=t.TransactionController.transactions;if(e.length<=40)return t;const r=e.reverse();let n=!0;for(;r.length>40&&n;){const e=r.findIndex(e=>"failed"===e.status||"rejected"===e.status||"confirmed"===e.status||"dropped"===e.status);e<0?n=!1:r.splice(e,1)}t.TransactionController.transactions=r.reverse()}return t}(t.data);t.data=e}catch(e){console.warn("MetaMask Migration #23"+e.stack)}return Promise.resolve(t)}}},{clone:358}],94:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:24,migrate:async function(e){const t=n(e);t.meta.version=24;const r=function(e){const t=e;if(!t.TransactionController)return t;const r=t.TransactionController.transactions;return t.TransactionController.transactions=r.map((e,t)=>("unapproved"===e.status&&e.txParams&&e.txParams.from&&(e.txParams.from=e.txParams.from.toLowerCase()),e)),t}(t.data);return t.data=r,t}}},{clone:358}],95:[function(e,t,r){"use strict";const n=e("ethereumjs-util"),i=e("clone");t.exports={version:25,migrate:async function(e){const t=i(e);t.meta.version=25;const r=function(e){const t=e;if(t.TransactionController&&t.TransactionController.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.map(e=>"unapproved"!==e.status?e:(e.txParams=function(e){const t={from:e=>n.addHexPrefix(e).toLowerCase(),to:()=>n.addHexPrefix(e.to).toLowerCase(),nonce:e=>n.addHexPrefix(e),value:e=>n.addHexPrefix(e),data:e=>n.addHexPrefix(e),gas:e=>n.addHexPrefix(e),gasPrice:e=>n.addHexPrefix(e)},r={};return Object.keys(t).forEach(n=>{e[n]&&(r[n]=t[n](e[n]))}),r}(e.txParams),e))}return t}(t.data);return t.data=r,t}}},{clone:358,"ethereumjs-util":555}],96:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:26,migrate(e){const t=n(e);t.meta.version=26;try{const e=t.data;t.data=function(e){if(!e.KeyringController||!e.PreferencesController)return e;if(!e.KeyringController.walletNicknames)return e;return e.PreferencesController.identities=Object.keys(e.KeyringController.walletNicknames).reduce((t,r)=>(t[r]={name:e.KeyringController.walletNicknames[r],address:r},t),{}),delete e.KeyringController.walletNicknames,e}(e)}catch(e){return console.warn("MetaMask Migration #26"+e.stack),Promise.reject(e)}return Promise.resolve(t)}}},{clone:358}],97:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:27,migrate:async function(e){const t=n(e);t.meta.version=27;const r=function(e){const t=e;if(t.TransactionController&&t.TransactionController.transactions){const e=t.TransactionController.transactions;t.TransactionController.transactions=e.filter(e=>"rejected"!==e.status)}return t}(t.data);return t.data=r,t}}},{clone:358}],98:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:28,migrate:async function(e){const t=n(e);t.meta.version=28;const r=function(e){const t=e;if(t.PreferencesController&&t.PreferencesController.tokens&&t.PreferencesController.identities){const e=t.PreferencesController.identities,r=t.PreferencesController.tokens;t.PreferencesController.accountTokens={};for(const n in e)t.PreferencesController.accountTokens[n]={mainnet:r};t.PreferencesController.tokens=[]}return t}(t.data);return t.data=r,t}}},{clone:358}],99:[function(e,t,r){"use strict";const n=e("./fail-tx");t.exports={version:29,migrate:n(29,"Stuck in approved state for too long.",e=>{const t="approved"===e.status,r=e.submittedTime,n=Date.now();return t&&n-r>432e5})}},{"./fail-tx":109}],100:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:30,migrate:async function(e){const t=n(e);t.meta.version=30;const r=function(e){const t=e;if(e.PreferencesController){const e=t.PreferencesController.frequentRpcListDetail;e&&(e.forEach((t,r)=>{t.chainId&&Number.isNaN(parseInt(t.chainId))&&delete e[r].chainId}),t.PreferencesController.frequentRpcListDetail=e)}e.NetworkController&&(t.NetworkController.network&&Number.isNaN(parseInt(t.NetworkController.network))&&delete t.NetworkController.network,t.NetworkController.provider&&t.NetworkController.provider.chainId&&Number.isNaN(parseInt(t.NetworkController.provider.chainId))&&delete t.NetworkController.provider.chainId);return t}(t.data);return t.data=r,t}}},{clone:358}],101:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:31,migrate:async function(e){const t=n(e);t.meta.version=31;const r=function(e){const{KeyringController:t,PreferencesController:r}=e;if(t&&r){const{vault:e}=t;r.completedOnboarding=Boolean(e)}return e}(t.data);return t.data=r,t}}},{clone:358}],102:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:32,migrate:async function(e){const t=n(e);t.meta.version=32;const r=t.data;return t.data=function(e){const{PreferencesController:t}=e;if(t){const{betaUI:e}=t.featureFlags||{};t.completedUiMigration=e}return e}(r),t}}},{clone:358}],103:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:33,migrate:async function(e){const t=n(e);t.meta.version=33;const r=function(e){const t=e;e.NoticeController&&delete t.NoticeController;return t}(t.data);return t.data=r,t}}},{clone:358}],104:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:34,migrate:async function(e){const t=n(e);t.meta.version=34;const r=t.data;return t.data=function(e){const{PreferencesController:t}=e;if(t){const e=t.featureFlags||{};e.privacyMode||void 0!==t.migratedPrivacyMode||(t.migratedPrivacyMode=!0,e.privacyMode=!0)}return e}(r),t}}},{clone:358}],105:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:35,migrate:async function(e){const t=n(e);return t.meta.version=35,t.data=function(e){e.PreferencesController&&void 0!==e.PreferencesController.seedWords&&delete e.PreferencesController.seedWords;return e}(t.data),t}}},{clone:358}],106:[function(e,t,r){"use strict";const n=e("clone");t.exports={version:36,migrate:async function(e){const t=n(e);t.meta.version=36;const r=t.data;return t.data=function(e){const{PreferencesController:t}=e;if(t){const e=t.featureFlags||{};void 0!==e.privacyMode&&delete e.privacyMode}return e}(r),t}}},{clone:358}],107:[function(e,t,r){"use strict";const n=e("clone"),{util:i}=e("gaba");t.exports={version:37,migrate:async function(e){const t=n(e);t.meta.version=37;const r=t.data;return t.data=function(e){if(e.AddressBookController){const t=e.AddressBookController.addressBook,r=new Set,n={};for(const e in t)r.add(t[e].chainId);for(const e of r.values()){n[e]={};for(const r in t)t[r].chainId===e&&(t[r].isEns=!1,i.normalizeEnsName(t[r].name)&&(t[r].isEns=!0),n[e][r]=t[r])}e.AddressBookController.addressBook=n}return e}(r),t}}},{clone:358,gaba:624}],108:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault")(e("@babel/runtime/helpers/defineProperty"));function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;tt(e)?(e.status="failed",e.err={message:r,note:`Tx automatically failed by migration because ${r}`},e):e)}return n}(o.data,r,t);o.data=e}catch(t){console.warn(`MetaMask Migration #${e}`+t.stack)}return Promise.resolve(o)}}},{clone:358}],110:[function(e,t,r){"use strict";t.exports=[e("./002"),e("./003"),e("./004"),e("./005"),e("./006"),e("./007"),e("./008"),e("./009"),e("./010"),e("./011"),e("./012"),e("./013"),e("./014"),e("./015"),e("./016"),e("./017"),e("./018"),e("./019"),e("./020"),e("./021"),e("./022"),e("./023"),e("./024"),e("./025"),e("./026"),e("./027"),e("./028"),e("./029"),e("./030"),e("./031"),e("./032"),e("./033"),e("./034"),e("./035"),e("./036"),e("./037"),e("./038")]},{"./002":72,"./003":73,"./004":74,"./005":75,"./006":76,"./007":77,"./008":78,"./009":79,"./010":80,"./011":81,"./012":82,"./013":83,"./014":84,"./015":85,"./016":86,"./017":87,"./018":88,"./019":89,"./020":90,"./021":91,"./022":92,"./023":93,"./024":94,"./025":95,"./026":96,"./027":97,"./028":98,"./029":99,"./030":100,"./031":101,"./032":102,"./033":103,"./034":104,"./035":105,"./036":106,"./037":107,"./038":108}],111:[function(e,t,r){"use strict";const n=e("extensionizer"),{createExplorerLink:i}=e("etherscan-link"),{getEnvironmentType:o}=e("../lib/util"),{ENVIRONMENT_TYPE_BACKGROUND:a}=e("../lib/enums");t.exports=class{reload(){n.runtime.reload()}openWindow({url:e}){n.tabs.create({url:e})}closeCurrentWindow(){return n.windows.getCurrent(e=>n.windows.remove(e.id))}getVersion(){return n.runtime.getManifest().version}openExtensionInBrowser(e=null,t=null){let r=n.runtime.getURL("home.html");t&&(r+=`?${t}`),e&&(r+=`#${e}`),this.openWindow({url:r}),o()!==a&&window.close()}getPlatformInfo(e){try{n.runtime.getPlatformInfo(t=>{e(null,t)})}catch(t){e(t)}}showTransactionNotification(e){const{status:t,txReceipt:{status:r}={}}=e;"confirmed"===t?"0x0"===r?this._showFailedTransaction(e,"Transaction encountered an error."):this._showConfirmedTransaction(e):"failed"===t&&this._showFailedTransaction(e)}_showConfirmedTransaction(e){this._subscribeToNotificationClicked();const t=i(e.hash,parseInt(e.metamaskNetworkId)),r=`Transaction ${parseInt(e.txParams.nonce,16)} confirmed! View on Etherscan`;this._showNotification("Confirmed transaction",r,t)}_showFailedTransaction(e,t){const r=`Transaction ${parseInt(e.txParams.nonce,16)} failed! ${t||e.err.message}`;this._showNotification("Failed transaction",r)}_showNotification(e,t,r){n.notifications.create(r,{type:"basic",title:e,iconUrl:n.extension.getURL("../../images/icon-64.png"),message:t})}_subscribeToNotificationClicked(){n.notifications.onClicked.hasListener(this._viewOnEtherscan)||n.notifications.onClicked.addListener(this._viewOnEtherscan)}_viewOnEtherscan(e){e.startsWith("http://")&&n.tabs.create({url:e})}}},{"../lib/enums":49,"../lib/util":70,"etherscan-link":571,extensionizer:608}],112:[function(e,t,r){"use strict";function n(e){return new Promise(t=>setTimeout(t,e))}function i(e){return new Promise(async t=>{const r=await fetch("http://localhost:8889?key="+e),n=await r.text();t(n.length?JSON.parse(n):null)})}t.exports=class{static openBox(e){return this.address=e,Promise.resolve({onSyncDone:e=>{setTimeout(e,200)},openSpace:async(e,t)=>{const{onSyncDone:r}=t;return this.spaceName=e,setTimeout(r,150),await n(50),{private:{get:async e=>{return await n(50),await i(`${this.address}-${this.spaceName}-${e}`)},set:async(e,t)=>(await function(e,t){return new Promise(async r=>{r((await fetch("http://localhost:8889",{method:"POST",body:JSON.stringify({key:e,data:t})})).text())})}(`${this.address}-${this.spaceName}-${e}`,t),await n(50),null)}}},logout:()=>{}})}static async getConfig(e){return await i(`${e}-metamask-metamaskBackup`)?{spaces:{metamask:{}}}:{}}}},{}],113:[function(e,t,r){t.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},{}],114:[function(e,t,r){function n(){return t.exports=n=Object.assign||function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}},{"./objectWithoutPropertiesLoose":117}],117:[function(e,t,r){t.exports=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},{}],118:[function(e,t,r){(function(t,n){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i=e("@sentry/core"),o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function a(e,t){function r(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var s=function(){return(s=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}function l(){for(var e=[],t=0;t=200&&t<300?e.Success:429===t?e.RateLimit:t>=400&&t<500?e.Invalid:t>=500?e.Failed:e.Unknown}}(t.Status||(t.Status={}))}));d(m);var y=m.Severity,g=m.Status,b=p((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isError=function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},t.isErrorEvent=function(e){return"[object ErrorEvent]"===Object.prototype.toString.call(e)},t.isDOMError=function(e){return"[object DOMError]"===Object.prototype.toString.call(e)},t.isDOMException=function(e){return"[object DOMException]"===Object.prototype.toString.call(e)},t.isUndefined=function(e){return void 0===e},t.isFunction=function(e){return"function"==typeof e},t.isString=function(e){return"[object String]"===Object.prototype.toString.call(e)},t.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},t.isPlainObject=function(e){return"[object Object]"===Object.prototype.toString.call(e)},t.isRegExp=function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},t.isNaN=function(e){return e!=e}}));d(b);var v=b.isError,w=b.isErrorEvent,x=b.isDOMError,_=b.isDOMException,k=b.isUndefined,S=b.isFunction,E=b.isString,A=(b.isArray,b.isPlainObject),T=(b.isRegExp,b.isNaN,p((function(e,r){function n(){return"[object process]"===Object.prototype.toString.call(void 0!==t?t:0)}function i(){return n()?h:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}}function o(e){var t,r,n,i,o,a=[];if(!e||!e.tagName)return"";if(a.push(e.tagName.toLowerCase()),e.id&&a.push("#"+e.id),(t=e.className)&&b.isString(t))for(r=t.split(/\s+/),o=0;o ".length;r&&i++<5&&!("html"===(t=o(r))||i>1&&a+n.length*s+t.length>=80);)n.push(t),a+=t.length,r=r.parentNode;return n.reverse().join(" > ")},r.htmlElementAsString=o,r.parseUrl=function(e){if(!e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};var r=t[6]||"",n=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],relative:t[5]+r+n}},r.getEventDescription=function(e){if(e.message)return e.message;if(e.exception&&e.exception.values&&e.exception.values[0]){var t=e.exception.values[0];return t.type&&t.value?t.type+": "+t.value:t.type||t.value||e.event_id||""}return e.event_id||""},r.consoleSandbox=function(e){var t=i();if(!("console"in t))return e();var r=t.console,n={};["debug","info","warn","error","log"].forEach((function(e){e in t.console&&r[e].__sentry__&&(n[e]=r[e].__sentry_wrapped__,r[e]=r[e].__sentry_original__)}));var o=e();return Object.keys(n).forEach((function(e){r[e]=n[e]})),o}})));d(T);T.dynamicRequire,T.isNodeEnv;var C=T.getGlobalObject,j=(T.uuid4,T.htmlTreeAsString),M=(T.htmlElementAsString,T.parseUrl),B=T.getEventDescription,O=(T.consoleSandbox,p((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r=T.getGlobalObject(),n=new(function(){function e(){this.enabled=!1}return e.prototype.disable=function(){this.enabled=!1},e.prototype.enable=function(){this.enabled=!0},e.prototype.log=function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0});var n="[NaN]",i="[undefined]";function o(){var e=[],t=[],r=function(r,n){return e[0]===n?"[Circular ~]":"[Circular ~."+t.slice(0,e.indexOf(n)).join(".")+"]"};return function(o,a){var s=a;if(b.isNaN(a)?s=n:b.isUndefined(a)&&(s=i),e.length>0){var c=e.indexOf(this);-1!==c?(e.splice(c+1),t.splice(c,1/0,o)):(e.push(this),t.push(o)),-1!==e.indexOf(s)&&(s=r.call(this,o,s))}else e.push(s);return s instanceof Error?function(e){var t={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}(s):s}}function a(e,t){return t===n?NaN:t!==i?t:void 0}function s(e){return JSON.stringify(e,o())}function c(e){return JSON.parse(e,a)}t.serialize=s,t.deserialize=c,t.clone=function(e){return c(s(e))},t.fill=function(e,t,r){if(t in e&&!e[t].__sentry__){var n=e[t],i=r(n);i.__sentry__=!0,i.__sentry_original__=n,i.__sentry_wrapped__=i,e[t]=i}},t.urlEncode=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")};var u=3,f=51200,l=40;function d(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}function p(e){if("string"==typeof e)return e.length<=40?e:e.substr(0,39)+"…";if("number"==typeof e||"boolean"==typeof e||void 0===e)return e;if(b.isNaN(e))return"[NaN]";if(b.isUndefined(e))return"[undefined]";var t=Object.prototype.toString.call(e);if("[object Object]"===t)return"[Object]";if("[object Array]"===t)return"[Array]";if("[object Function]"===t){var r=e.name;return r?"[Function: "+r+"]":"[Function]"}return e}function m(e,t){if(0===t)return p(e);if(b.isPlainObject(e)){var r={},n=e;return Object.keys(n).forEach((function(e){r[e]=m(n[e],t-1)})),r}return Array.isArray(e)?e.map((function(e){return m(e,t-1)})):p(e)}t.serializeObject=m,t.limitObjectDepthToSize=function e(t,r,n){void 0===r&&(r=u),void 0===n&&(n=f);var i=m(t,r);return d(s(i))>n?e(t,r-1):i},t.serializeKeysToEventMessage=function(e,t){if(void 0===t&&(t=l),!e.length)return"[object has no keys]";if(e[0].length>=t)return e[0];for(var r=e.length;r>0;r--){var n=e.slice(0,r).join(", ");if(!(n.length>t))return r===e.length?n:n+"…"}return""},t.assign=function(e){for(var t,n,i=[],o=1;o=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(t,"__esModule",{value:!0}),t.truncate=function(e,t){return void 0===t&&(t=0),0!==t&&b.isString(e)?e.length<=t?e:e.substr(0,t)+"…":e},t.snipLine=function(e,t){var r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);var i=Math.max(t-60,0);i<5&&(i=0);var o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r="'{snip} "+r),oe.length)&&-1!==e.indexOf(t)}})));d($);$.truncate,$.snipLine;var J=$.safeJoin,Q=$.includes;function Y(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function Z(e,t,r,n,i,o){return Y((a=Y(Y(t,e),Y(n,o)))<<(s=i)|a>>>32-s,r);var a,s}function X(e,t,r,n,i,o,a){return Z(t&r|~t&n,e,t,i,o,a)}function ee(e,t,r,n,i,o,a){return Z(t&n|r&~n,e,t,i,o,a)}function te(e,t,r,n,i,o,a){return Z(t^r^n,e,t,i,o,a)}function re(e,t,r,n,i,o,a){return Z(r^(t|~n),e,t,i,o,a)}function ne(e,t){var r,n,i,o,a;e[t>>5]|=128<>>9<<4)]=t;var s=1732584193,c=-271733879,u=-1732584194,f=271733878;for(r=0;r>5]>>>t%32&255);return r}function oe(e){var t,r=[];for(r[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return n}function se(e){return unescape(encodeURIComponent(e))}function ce(e){return function(e){return ie(ne(oe(e),8*e.length))}(se(e))}function ue(e,t){return function(e,t){var r,n,i=oe(e),o=[],a=[];for(o[15]=a[15]=void 0,i.length>16&&(i=ne(i,8*e.length)),r=0;r<16;r+=1)o[r]=909522486^i[r],a[r]=1549556828^i[r];return n=ne(o.concat(oe(t)),512+8*t.length),ie(ne(a.concat(n),640))}(se(e),se(t))}function fe(e,t,r){return t?r?ue(t,e):ae(ue(t,e)):r?ce(e):ae(ce(e))}var le=C(),he={wrap:function(){return function(){}},report:!1,collectWindowErrors:!1,computeStackTrace:!1,remoteFetching:!1,linesOfContext:!1,extendToAsynchronousCallbacks:!1},de=[].slice,pe="?",me=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function ye(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ge(){return"undefined"==typeof document||null==document.location?"":document.location.href}he.wrap=function(e){return function(){try{return e.apply(this,arguments)}catch(e){throw he.report(e),e}}},he.report=function(){var e,t,r,n,i=[],o=null,a=null;function c(e,t,r){var n=null;if(!t||he.collectWindowErrors){for(var o in i)if(ye(i,o))try{i[o](e,t,r)}catch(e){n=e}if(n)throw n}}function u(t,r,n,i,o){var u=null;if(o=w(o)?o.error:o,t=w(t)?t.message:t,a)he.computeStackTrace.augmentStackTraceWithInitialElement(a,r,n,t),l();else if(o&&v(o))(u=he.computeStackTrace(o)).mechanism="onerror",c(u,!0,o);else{var f,h={url:r,line:n,column:i},d=t;if("[object String]"==={}.toString.call(t)){var p=t.match(me);p&&(f=p[1],d=p[2])}h.func=he.computeStackTrace.guessFunctionName(h.url,h.line),h.context=he.computeStackTrace.gatherContext(h.url,h.line),c(u={name:f,message:d,mode:"onerror",mechanism:"onerror",stack:[s({},h,{url:h.url||ge()})]},!0,null)}return!!e&&e.apply(this,arguments)}function f(e){var t=e&&(e.detail?e.detail.reason:e.reason)||e,r=he.computeStackTrace(t);r.mechanism="onunhandledrejection",c(r,!0,t)}function l(){var e=a,t=o;a=null,o=null,c(e,!1,t)}function h(e){if(a){if(o===e)return;l()}var t=he.computeStackTrace(e);throw a=t,o=e,setTimeout((function(){o===e&&l()}),t.incomplete?2e3:0),e}return h.subscribe=function(e){i.push(e)},h.unsubscribe=function(o){for(var a=i.length-1;a>=0;--a)i[a]===o&&i.splice(a,1);0===i.length&&(t&&(le.onerror=e,t=!1),n&&(le.onerror=r,n=!1))},h.installGlobalHandler=function(){!0!==t&&(e=le.onerror,le.onerror=u,t=!0)},h.installGlobalUnhandledRejectionHandler=function(){!0!==n&&(r=le.onunhandledrejection,le.onunhandledrejection=f,n=!0)},h}(),he.computeStackTrace=function(){var e=!1,t={};function r(e){if("string"!=typeof e)return[];if(!ye(t,e)){var r="",n="";try{n=le.document.domain}catch(e){}var i=/(.*)\:\/\/([^:\/]+)([:\d]*)\/{0,1}([\s\S]*)/.exec(e);i&&i[2]===n&&(r=function(e){if(!he.remoteFetching)return"";try{var t=function(){try{return new le.XMLHttpRequest}catch(e){return new le.ActiveXObject("Microsoft.XMLHTTP")}}();return t.open("GET",e,!1),t.send(""),t.responseText}catch(e){return""}}(e)),t[e]=r?r.split("\n"):[]}return t[e]}function n(e,t){var n,i=/function ([^(]*)\(([^)]*)\)/,o=/['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,a="",s=r(e);if(!s.length)return pe;for(var c=0;c<10;++c)if(a=s[t-c]+a,!k(a)){if(n=o.exec(a))return n[1];if(n=i.exec(a))return n[1]}return pe}function i(e,t){var n=r(e);if(!n.length)return null;var i=[],o=Math.floor(he.linesOfContext/2),a=o+he.linesOfContext%2,s=Math.max(0,t-o-1),c=Math.min(n.length,t+a-1);t-=1;for(var u=s;u0?i:null}function o(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g,"\\$&")}function a(e){return o(e).replace("<","(?:<|<)").replace(">","(?:>|>)").replace("&","(?:&|&)").replace('"','(?:"|")').replace(/\s+/g,"\\s+")}function s(e,t){for(var n,i,o=0,a=t.length;on&&(i=s.exec(a[n]))?i.index:null}function u(e){if(!k(le&&le.document)){for(var t,r,n,i,c=[ge()],u=le.document.getElementsByTagName("script"),f=""+e,l=0;l|[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,u=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,f=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,h=e.stack.split("\n"),d=[],p=/^(.*) is undefined$/.exec(e.message),m=0,y=h.length;m eval")>-1&&(t=f.exec(r[3]))?r[3]=t[1]:0!==m||r[5]||k(e.columnNumber)||(d[0].column=e.columnNumber+1),o={url:r[3],func:r[1]||pe,args:r[2]?r[2].split(","):[],line:r[4]?+r[4]:null,column:r[5]?+r[5]:null}}if(!o.func&&o.line&&(o.func=n(o.url,o.line)),he.remoteFetching&&o.url&&"blob:"===o.url.substr(0,5)){var b=new XMLHttpRequest;if(b.open("GET",o.url,!1),b.send(""),200===b.status){var v=b.responseText||"",w=(v=v.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(w){var x=w[1];"~"===x.charAt(0)&&(x=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+x.slice(1)),o.url=x.slice(0,-4)}}}o.context=o.line?i(o.url,o.line):null,d.push(o)}return d.length?(d[0]&&d[0].line&&!d[0].column&&p&&(d[0].column=c(p[1],d[0].url,d[0].line)),{mode:"stack",name:e.name,message:e.message,stack:d}):null}function l(e,t,r,o){var a={url:t,line:r};if(a.url&&a.line){e.incomplete=!1,a.func||(a.func=n(a.url,a.line)),a.context||(a.context=i(a.url,a.line));var s=/ '([^']+)' /.exec(o);if(s&&(a.column=c(s[1],a.url,a.line)),e.stack.length>0&&e.stack[0].url===a.url){if(e.stack[0].line===a.line)return!1;if(!e.stack[0].line&&e.stack[0].func===a.func)return e.stack[0].line=a.line,e.stack[0].context=a.context,!1}return e.stack.unshift(a),e.partial=!0,!0}return e.incomplete=!0,!1}function h(e,t){for(var r,i,o,a=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,s=[],f={},p=!1,m=h.caller;m&&!p;m=m.caller)if(m!==d&&m!==he.report){if(i={url:null,func:pe,args:[],line:null,column:null},m.name?i.func=m.name:(r=a.exec(m.toString()))&&(i.func=r[1]),void 0===i.func)try{i.func=r.input.substring(0,r.input.indexOf("{"))}catch(e){}if(o=u(m)){i.url=o.url,i.line=o.line,i.func===pe&&(i.func=n(i.url,i.line));var y=/ '([^']+)' /.exec(e.message||e.description);y&&(i.column=c(y[1],o.url,o.line))}f[""+m]?p=!0:f[""+m]=!0,s.push(i)}t&&s.splice(0,t);var g={mode:"callers",name:e.name,message:e.message,stack:s};return l(g,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),g}function d(t,o){var c=null;o=null==o?0:+o;try{if(c=function(e){var t=e.stacktrace;if(t){for(var r,o=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,a=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,s=t.split("\n"),c=[],u=0;u=0&&(y.line=g+v.substring(0,w).split("\n").length)}}}else if(o=f.exec(t[m])){var x=ge().replace(/#.*$/,""),_=s(new RegExp(a(t[m+1])),[x]);y={url:x,func:"",args:[],line:_?_.line:o[1],column:null}}if(y){y.func||(y.func=n(y.url,y.line));var k=i(y.url,y.line),S=k?k[Math.floor(k.length/2)]:null;k&&S.replace(/^\s*/,"")===t[m+1].replace(/^\s*/,"")?y.context=k:y.context=[t[m+1]],l.push(y)}}return l.length?{mode:"multiline",name:e.name,message:t[0],stack:l}:null}(t))return c}catch(t){if(e)throw t}try{if(c=h(t,o+1))return c}catch(t){if(e)throw t}return{name:t.name,message:t.message,mode:"failed"}}return d.augmentStackTraceWithInitialElement=l,d.computeStackTraceFromStackProp=f,d.guessFunctionName=n,d.gatherContext=i,d.ofCaller=function(e){e=1+(null==e?0:+e);try{throw new Error}catch(t){return d(t,e+1)}},d.getSource=r,d}(),he.extendToAsynchronousCallbacks=function(){var e=function(e){var t=le[e];le[e]=function(){var e=de.call(arguments),r=e[0];return"function"==typeof r&&(e[0]=he.wrap(r)),t.apply?t.apply(this,e):t(e[0],e[1])}};e("setTimeout"),e("setInterval")},he.remoteFetching=!1,he.collectWindowErrors=!0,he.linesOfContext=11;var be=he.report.subscribe,ve=he.report.installGlobalHandler,we=he.report.installGlobalUnhandledRejectionHandler,xe=he.computeStackTrace,_e=50;function ke(e){var t={stacktrace:{frames:Ee(e.stack)},type:e.name,value:e.message};return void 0===t.type&&""===t.value&&(t.value="Unrecoverable error caught"),t}function Se(e){return{exception:{values:[ke(e)]}}}function Ee(e){if(!e||!e.length)return[];var t=e,r=t[0].func||"";return(Q(r,"captureMessage")||Q(r,"captureException"))&&(t=t.slice(1)),t.map((function(e){return{colno:e.column,filename:e.url||t[0].url,function:e.func||"?",in_app:!0,lineno:e.line}})).slice(0,_e).reverse()}var Ae,Te,Ce=function(){function e(e){this.options=e,this.url=new i.API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return e.prototype.captureEvent=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(e){throw new i.SentryError("Transport Class has to implement `captureEvent` method")}))}))},e}(),je=C(),Me=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.captureEvent=function(e){return c(this,void 0,void 0,(function(){var t,r;return u(this,(function(n){switch(n.label){case 0:return t={body:q(e),method:"POST",referrerPolicy:U()?"origin":""},[4,je.fetch(this.url,t)];case 1:return r=n.sent(),[2,{status:g.fromHttpCode(r.status)}]}}))}))},t}(Ce),Be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.captureEvent=function(e){return c(this,void 0,void 0,(function(){var t=this;return u(this,(function(r){return[2,new Promise((function(r,n){var i=new XMLHttpRequest;i.onreadystatechange=function(){4===i.readyState&&(200===i.status&&r({status:g.fromHttpCode(i.status)}),n(i))},i.open("POST",t.url),i.send(q(e))}))]}))}))},t}(Ce),Oe=C(),Pe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.captureEvent=function(e){return c(this,void 0,void 0,(function(){var t;return u(this,(function(r){return t=q(e),[2,{status:Oe.navigator.sendBeacon(this.url,t)?g.Success:g.Failed}]}))}))},t}(Ce),Ie=Object.freeze({BaseTransport:Ce,FetchTransport:Me,XHRTransport:Be,BeaconTransport:Pe}),Ne=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return a(t,e),t.prototype.install=function(){if(!this.options.dsn)throw new i.SentryError("Invariant exception: install() must not be called when disabled");return Error.stackTraceLimit=50,!0},t.prototype.eventFromException=function(e,t){return c(this,void 0,void 0,(function(){var r,n,i,o;return u(this,(function(a){switch(a.label){case 0:return w(e)&&e.error?(e=(o=e).error,r=Se(xe(e)),[3,7]):[3,1];case 1:return x(e)||_(e)?(n=(o=e).name||(x(o)?"DOMError":"DOMException"),i=o.message?n+": "+o.message:n,[4,this.eventFromMessage(i,void 0,t)]):[3,3];case 2:return r=a.sent(),[3,7];case 3:return v(e)?(r=Se(xe(e)),[3,7]):[3,4];case 4:return A(e)&&t&&t.syntheticException?(r=function(e,t){var r=Object.keys(e).sort(),n={extra:{__serialized__:W(e)},fingerprint:[fe(r.join(""))],message:"Non-Error exception captured with keys: "+G(r)};if(t){var i=Ee(xe(t).stack);n.stacktrace={frames:i}}return n}(o=e,t.syntheticException),[3,7]):[3,5];case 5:return o=e,[4,this.eventFromMessage(o,void 0,t)];case 6:r=a.sent(),a.label=7;case 7:return[2,r=s({},r,{event_id:t&&t.event_id,exception:s({},r.exception,{mechanism:{handled:!0,type:"generic"}})})]}}))}))},t.prototype.eventFromMessage=function(e,t,r){return void 0===t&&(t=y.Info),c(this,void 0,void 0,(function(){var n,i,o;return u(this,(function(a){return n={event_id:r&&r.event_id,fingerprint:[e],level:t,message:e},this.options.attachStacktrace&&r&&r.syntheticException&&(i=xe(r.syntheticException),o=Ee(i.stack),n.stacktrace={frames:o}),[2,n]}))}))},t.prototype.sendEvent=function(e){return c(this,void 0,void 0,(function(){var t;return u(this,(function(r){return this.options.dsn?(this.transport||(t=this.options.transportOptions?this.options.transportOptions:{dsn:this.options.dsn},this.options.transport?this.transport=new this.options.transport({dsn:this.options.dsn}):R()?this.transport=new Pe(t):N()?this.transport=new Me(t):this.transport=new Be(t)),[2,this.transport.captureEvent(e)]):(P.warn("Event has been skipped because no Dsn is configured."),[2,{status:g.Skipped,reason:"Event has been skipped because no Dsn is configured."}])}))}))},t}(i.BaseBackend),De="sentry.javascript.browser",Re=function(e){function t(t){return e.call(this,Ne,t)||this}return a(t,e),t.prototype.prepareEvent=function(t,r,n){return c(this,void 0,void 0,(function(){return u(this,(function(i){return t.platform=t.platform||"javascript",t.sdk=s({},t.sdk,{name:De,packages:l(t.sdk&&t.sdk.packages||[],[{name:"npm:@sentry/browser",version:"4.2.3"}]),version:"4.2.3"}),[2,e.prototype.prepareEvent.call(this,t,r,n)]}))}))},t.prototype.showReportDialog=function(e){void 0===e&&(e={});var t=C().document;if(t){var r=e.dsn||this.getDsn();if(!e.eventId)throw new i.SentryError("Missing `eventId` option in showReportDialog call");if(!r)throw new i.SentryError("Missing `Dsn` option in showReportDialog call");var n=t.createElement("script");n.async=!0,n.src=new i.API(r).getReportDialogEndpoint(e),(t.head||t.body).appendChild(n)}},t}(i.BaseClient),Le=1e3,Ue=0;function Fe(){Ue+=1,setTimeout((function(){Ue-=1}))}function ze(e,t,r){if(void 0===t&&(t={}),!S(e))return e;try{if(e.__sentry__)return e;if(e.__sentry_wrapped__)return e.__sentry_wrapped__}catch(t){return e}var n=function(){var n=this;r&&S(r)&&r.apply(this,arguments);var o=Array.prototype.slice.call(arguments);try{var a=o.map((function(e){return ze(e,t)}));return e.handleEvent?e.handleEvent.apply(this,a):e.apply(this,a)}catch(e){throw Fe(),i.withScope((function(r){return c(n,void 0,void 0,(function(){var n=this;return u(this,(function(a){return r.addEventProcessor((function(e){return c(n,void 0,void 0,(function(){var r;return u(this,(function(n){return r=s({},e),t.mechanism&&(r.exception=r.exception||{},r.exception.mechanism=t.mechanism),r.extra=s({},r.extra,{arguments:V(o,2)}),[2,r]}))}))})),i.getCurrentHub().captureException(e,{originalException:e}),[2]}))}))})),e}};try{for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o])}catch(e){}return n.prototype=e.prototype,e.__sentry_wrapped__=n,n.__sentry__=!0,n.__sentry_original__=e,n}function qe(e){return function(t){if(Ae=void 0,Te!==t){var r;Te=t;try{r=j(t.target)}catch(e){r=""}i.getCurrentHub().addBreadcrumb({category:"ui."+e,message:r},{event:t,name:e})}}}function He(){return function(e){var t;try{t=e.target}catch(e){return}var r=t&&t.tagName;r&&("INPUT"===r||"TEXTAREA"===r||t.isContentEditable)&&(Ae||qe("input")(e),clearTimeout(Ae),Ae=setTimeout((function(){Ae=void 0}),Le))}}var Ke,Ve=function(){function e(t){this.name=e.id,this.options=s({onerror:!0,onunhandledrejection:!0},t)}return e.prototype.setupOnce=function(){be((function(t,r,n){if(!(Ue>0)){var o=i.getCurrentHub().getIntegration(e);o&&i.getCurrentHub().captureEvent(o.eventFromGlobalHandler(t),{originalException:n,data:{stack:t}})}})),this.options.onerror&&(P.log("Global Handler attached: onerror"),ve()),this.options.onunhandledrejection&&(P.log("Global Handler attached: onunhandledrejection"),we())},e.prototype.eventFromGlobalHandler=function(e){var t=Se(e);return s({},t,{exception:s({},t.exception,{mechanism:{data:{mode:e.mode},handled:!1,type:e.mechanism}})})},e.id="GlobalHandlers",e}(),We=function(){function e(){this.ignoreOnError=0,this.name=e.id}return e.prototype.wrapTimeFunction=function(e){return function(){for(var t=[],r=0;r"},handled:!0,type:"instrument"}}),e.apply(this,t)}},e.prototype.wrapRAF=function(e){return function(t){return e(ze(t,{mechanism:{data:{function:"requestAnimationFrame",handler:e&&e.name||""},handled:!0,type:"instrument"}}))}},e.prototype.wrapEventTarget=function(e){var t=C(),r=t[e]&&t[e].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty("addEventListener")&&(K(r,"addEventListener",(function(t){return function(r,n,i){try{n.handleEvent=ze(n.handleEvent.bind(n),{mechanism:{data:{function:"handleEvent",handler:n&&n.name||"",target:e},handled:!0,type:"instrument"}})}catch(e){}var o,a,s;return"EventTarget"!==e&&"Node"!==e||(a=qe("click"),s=He(),o=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?a(e):"keypress"===t?s(e):void 0}}),t.call(this,r,ze(n,{mechanism:{data:{function:"addEventListener",handler:n&&n.name||"",target:e},handled:!0,type:"instrument"}},o),i)}})),K(r,"removeEventListener",(function(e){return function(t,r,n){var i=r;try{i=i&&(i.__sentry_wrapped__||i)}catch(e){}return e.call(this,t,i,n)}})))},e.prototype.setupOnce=function(){this.ignoreOnError=this.ignoreOnError;var e=C();K(e,"setTimeout",this.wrapTimeFunction.bind(this)),K(e,"setInterval",this.wrapTimeFunction.bind(this)),K(e,"requestAnimationFrame",this.wrapRAF.bind(this)),["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"].forEach(this.wrapEventTarget.bind(this))},e.id="TryCatch",e}(),Ge=C(),$e=function(){function e(t){this.name=e.id,this.options=s({beacon:!0,console:!0,dom:!0,fetch:!0,history:!0,sentry:!0,xhr:!0},t)}return e.prototype.instrumentBeacon=function(){R()&&K(Ge.navigator,"sendBeacon",(function(t){return function(){for(var r=[],n=0;n2?t[2]:void 0;return i&&r(Ke,String(i)),e.apply(this,t)}}},e.prototype.instrumentXHR=function(){if("XMLHttpRequest"in Ge){var t=XMLHttpRequest.prototype;K(t,"open",(function(e){return function(){for(var t=[],r=0;r"},handled:!0,type:"instrument"}},a)})):o.onreadystatechange=a,t.apply(this,n)}}))}function r(e,t){e in t&&S(t[e])&&K(t,e,(function(t){return ze(t,{mechanism:{data:{function:e,handler:t&&t.name||""},handled:!0,type:"instrument"}})}))}},e.addBreadcrumb=function(t,r){i.getCurrentHub().getIntegration(e)&&i.getCurrentHub().addBreadcrumb(t,r)},e.prototype.setupOnce=function(){this.options.console&&this.instrumentConsole(),this.options.dom&&this.instrumentDOM(),this.options.xhr&&this.instrumentXHR(),this.options.fetch&&this.instrumentFetch(),this.options.beacon&&this.instrumentBeacon(),this.options.history&&this.instrumentHistory()},e.id="Breadcrumbs",e}();function Je(e){try{var t=H(e);$e.addBreadcrumb({category:"sentry",event_id:t.event_id,level:t.level||y.fromString("error"),message:B(t)},{event:t})}catch(e){P.error("Error while adding sentry type breadcrumb")}}var Qe,Ye="cause",Ze=5,Xe=function(){function e(t){void 0===t&&(t={}),this.name=e.id,this.key=t.key||Ye,this.limit=t.limit||Ze}return e.prototype.setupOnce=function(){var t=this;i.addGlobalEventProcessor((function(r,n){return c(t,void 0,void 0,(function(){var t;return u(this,(function(o){return(t=i.getCurrentHub().getIntegration(e))?[2,t.handler(r,n)]:[2,r]}))}))}))},e.prototype.handler=function(e,t){if(!(e.exception&&e.exception.values&&t&&t.originalException instanceof Error))return e;var r=this.walkErrorTree(t.originalException,this.key);return e.exception.values=l(e.exception.values,r),e},e.prototype.walkErrorTree=function(e,t,r){if(void 0===r&&(r=[]),!(e[t]instanceof Error)||r.length>=this.limit)return r;var n=ke(xe(e[t]));return this.walkErrorTree(e[t],t,l(r,[n]))},e.id="LinkedErrors",e}();!function(e){e.Crash="crash",e.Deprecation="deprecation",e.Intervention="intervention"}(Qe||(Qe={}));var et=function(){function e(t){void 0===t&&(t={types:[Qe.Crash,Qe.Deprecation,Qe.Intervention]}),this.options=t,this.name=e.id}return e.prototype.setupOnce=function(){L()&&new(C().ReportingObserver)(this.handler.bind(this),{buffered:!0,types:this.options.types}).observe()},e.prototype.handler=function(t){var r,n;if(i.getCurrentHub().getIntegration(e)){var o=function(e){i.withScope((function(t){t.setExtra("url",e.url);var r="ReportingObserver ["+e.type+"]",n="No details available";if(e.body){var o,a={};for(var s in e.body)a[s]=e.body[s];if(t.setExtra("body",a),e.type===Qe.Crash)n=[(o=e.body).crashId||"",o.reason||""].join(" ").trim()||n;else n=(o=e.body).message||n}i.captureMessage(r+": "+n)}))};try{for(var a=function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(t),s=a.next();!s.done;s=a.next()){o(s.value)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}}},e.id="ReportingObserver",e}(),tt=C(),rt=function(){function e(){this.name=e.id}return e.prototype.setupOnce=function(){var t=this;i.addGlobalEventProcessor((function(r){return c(t,void 0,void 0,(function(){var t;return u(this,(function(n){return i.getCurrentHub().getIntegration(e)&&tt.navigator&&tt.location?((t=r.request||{}).url=t.url||tt.location.href,t.headers=t.headers||{},t.headers["User-Agent"]=tt.navigator.userAgent,[2,s({},r,{request:t})]):[2,r]}))}))}))},e.id="UserAgent",e}(),nt=function(){function e(t){void 0===t&&(t={}),this.name=e.id,this.Ember=t.Ember||C().Ember}return e.prototype.setupOnce=function(){var t=this;if(this.Ember){var r=this.Ember.onerror;this.Ember.onerror=function(n){i.getCurrentHub().getIntegration(e)&&i.withScope((function(e){t.addIntegrationToSdkInfo(e),i.getCurrentHub().captureException(n,{originalException:n})})),"function"==typeof r&&r.call(t.Ember,n)},this.Ember.RSVP.on("error",(function(r){if(i.getCurrentHub().getIntegration(e)){var n=i.getCurrentHub().pushScope();r instanceof Error?(n.setExtra("context","Unhandled Promise error detected"),t.addIntegrationToSdkInfo(n),i.getCurrentHub().captureException(r,{originalException:r})):(n.setExtra("reason",r),t.addIntegrationToSdkInfo(n),i.captureMessage("Unhandled Promise error detected")),i.getCurrentHub().popScope()}}))}},e.prototype.addIntegrationToSdkInfo=function(e){var t=this;e.addEventProcessor((function(e){return c(t,void 0,void 0,(function(){var t;return u(this,(function(r){return e.sdk&&(t=e.sdk.integrations||[],e.sdk=s({},e.sdk,{integrations:l(t,["ember"])})),[2,e]}))}))}))},e.id="Ember",e}(),it=function(){function e(t){void 0===t&&(t={}),this.name=e.id,this.Vue=t.Vue||C().Vue}return e.prototype.formatComponentName=function(e){if(e.$root===e)return"root instance";var t=e._isVue?e.$options.name||e.$options._componentTag:e.name;return(t?"component <"+t+">":"anonymous component")+(e._isVue&&e.$options.__file?" at "+e.$options.__file:"")},e.prototype.setupOnce=function(){var t=this;if(this.Vue&&this.Vue.config){var r=this.Vue.config.errorHandler;this.Vue.config.errorHandler=function(n,o,a){var f={};A(o)&&(f.componentName=t.formatComponentName(o),f.propsData=o.$options.propsData),k(a)||(f.lifecycleHook=a),i.getCurrentHub().getIntegration(e)&&i.withScope((function(e){Object.keys(f).forEach((function(t){e.setExtra(t,f[t])})),e.addEventProcessor((function(e){return c(t,void 0,void 0,(function(){var t;return u(this,(function(r){return e.sdk&&(t=e.sdk.integrations||[],e.sdk=s({},e.sdk,{integrations:l(t,["vue"])})),[2,e]}))}))})),i.getCurrentHub().captureException(n,{originalException:n})})),"function"==typeof r&&r.call(t.Vue,n,o,a)}}},e.id="Vue",e}(),ot=Object.freeze({GlobalHandlers:Ve,TryCatch:We,Breadcrumbs:$e,LinkedErrors:Xe,ReportingObserver:et,UserAgent:rt,Ember:nt,Vue:it}),at=[new i.Integrations.Dedupe,new i.Integrations.InboundFilters,new i.Integrations.FunctionToString,new We,new $e,new Ve,new et,new Xe,new rt];var st=s({},i.Integrations,ot);r.addBreadcrumb=i.addBreadcrumb,r.captureException=i.captureException,r.captureEvent=i.captureEvent,r.captureMessage=i.captureMessage,r.configureScope=i.configureScope,r.withScope=i.withScope,r.getHubFromCarrier=i.getHubFromCarrier,r.getCurrentHub=i.getCurrentHub,r.Hub=i.Hub,r.Scope=i.Scope,r.Integrations=st,r.Transports=Ie,r.Severity=y,r.Status=g,r.BrowserBackend=Ne,r.BrowserClient=Re,r.defaultIntegrations=at,r.forceLoad=function(){},r.init=function(e){void 0===e&&(e={}),void 0===e.defaultIntegrations&&(e.defaultIntegrations=at),i.initAndBind(Re,e)},r.lastEventId=function(){return i.getCurrentHub().lastEventId()},r.onLoad=function(e){e()},r.showReportDialog=function(e){void 0===e&&(e={}),e.eventId||(e.eventId=i.getCurrentHub().lastEventId()),i.getCurrentHub().getClient().showReportDialog(e)},r.SDK_NAME=De,r.SDK_VERSION="4.2.3"}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"@sentry/core":124,_process:898}],119:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("@sentry/utils/object"),i=e("./dsn"),o=function(){function e(e){this.dsn=e,this.dsnObject=new i.Dsn(e)}return e.prototype.getDsn=function(){return this.dsnObject},e.prototype.getStoreEndpoint=function(){return""+this.getBaseUrl()+this.getStoreEndpointPath()},e.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var e={sentry_key:this.dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+n.urlEncode(e)},e.prototype.getBaseUrl=function(){var e=this.dsnObject,t=e.protocol?e.protocol+":":"",r=e.port?":"+e.port:"";return t+"//"+e.host+r},e.prototype.getStoreEndpointPath=function(){var e=this.dsnObject;return(e.path?"/"+e.path:"")+"/api/"+e.projectId+"/store/"},e.prototype.getRequestHeaders=function(e,t){var r=this.dsnObject,n=["Sentry sentry_version=7"];return n.push("sentry_timestamp="+(new Date).getTime()),n.push("sentry_client="+e+"/"+t),n.push("sentry_key="+r.user),r.pass&&n.push("sentry_secret="+r.pass),{"Content-Type":"application/json","X-Sentry-Auth":n.join(", ")}},e.prototype.getReportDialogEndpoint=function(e){void 0===e&&(e={});var t=this.dsnObject,r=this.getBaseUrl()+(t.path?"/"+t.path:"")+"/api/embed/error-page/",n=[];for(var i in n.push("dsn="+t.toString()),e)if("user"===i){if(!e.user)continue;e.user.name&&n.push("name="+encodeURIComponent(e.user.name)),e.user.email&&n.push("email="+encodeURIComponent(e.user.email))}else n.push(encodeURIComponent(i)+"="+encodeURIComponent(e[i]));return n.length?r+"?"+n.join("&"):r},e}();r.API=o},{"./dsn":122,"@sentry/utils/object":145}],120:[function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]f?[2,{status:a.Status.Skipped}]:[4,this.prepareEvent(e,n,r)]):[2,{status:a.Status.Skipped}];case 1:if(null===(l=o.sent()))return[2,{status:a.Status.Skipped}];h=l,o.label=2;case 2:return o.trys.push([2,5,,6]),r&&r.data&&!0===r.data.__sentry__||!u?[3,4]:[4,u(l,r)];case 3:void 0===(h=o.sent())&&c.logger.error("`beforeSend` method has to return `null` or a valid event"),o.label=4;case 4:return[3,6];case 5:return d=o.sent(),s.forget(this.captureException(d,{data:{__sentry__:!0},originalException:d})),[2,{reason:"Event processing in beforeSend method threw an exception",status:a.Status.Invalid}];case 6:return null===h?[2,{reason:"Event dropped due to being discarded by beforeSend method",status:a.Status.Skipped}]:[4,t(h)];case 7:return(p=o.sent()).event=h,p.status,a.Status.RateLimit,[2,p]}}))}))},e.prototype.close=function(e){return i(this,void 0,void 0,(function(){return o(this,(function(t){return[2,this.getBackend().getBuffer().drain(e)]}))}))},e.prototype.getIntegrations=function(){return this.integrations||{}},e.prototype.getIntegration=function(e){try{return this.integrations[e.id]||null}catch(t){return c.logger.warn("Cannot retrieve integration "+e.id+" from the current Client"),null}},e}();r.BaseClient=d},{"./dsn":122,"./integration":125,"@sentry/types":140,"@sentry/utils/async":141,"@sentry/utils/logger":143,"@sentry/utils/misc":144,"@sentry/utils/string":147}],122:[function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var o=e("@sentry/utils/is"),a=e("@sentry/utils/object"),s=e("./error"),c=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w\.-]+)(?::(\d+))?\/(.+)/,u=function(){function e(e){"string"==typeof e?this.fromString(e):this.fromComponents(e),this.validate()}return e.prototype.toString=function(e){void 0===e&&(e=!1);var t=this,r=t.host,n=t.path,i=t.pass,o=t.port,a=t.projectId;return t.protocol+"://"+t.user+(e&&i?":"+i:"")+"@"+r+(o?":"+o:"")+"/"+(n?n+"/":n)+a},e.prototype.fromString=function(e){var t=c.exec(e);if(!t)throw new s.SentryError("Invalid Dsn");var r=n(t.slice(1),6),i=r[0],o=r[1],u=r[2],f=void 0===u?"":u,l=r[3],h=r[4],d=void 0===h?"":h,p="",m=r[5],y=m.split("/");y.length>1&&(p=y.slice(0,-1).join("/"),m=y.pop()),a.assign(this,{host:l,pass:f,path:p,projectId:m,port:d,protocol:i,user:o})},e.prototype.fromComponents=function(e){this.protocol=e.protocol,this.user=e.user,this.pass=e.pass||"",this.host=e.host,this.port=e.port||"",this.path=e.path||"",this.projectId=e.projectId},e.prototype.validate=function(){var e,t;try{for(var r=i(["protocol","user","host","projectId"]),n=r.next();!n.done;n=r.next()){var a=n.value;if(!this[a])throw new s.SentryError("Invalid Dsn: Missing "+a)}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}if("http"!==this.protocol&&"https"!==this.protocol)throw new s.SentryError('Invalid Dsn: Unsupported protocol "'+this.protocol+'"');if(this.port&&o.isNaN(parseInt(this.port,10)))throw new s.SentryError('Invalid Dsn: Invalid port number "'+this.port+'"')},e}();r.Dsn=u},{"./error":123,"@sentry/utils/is":142,"@sentry/utils/object":145}],123:[function(e,t,r){"use strict";var n,i=this&&this.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)});Object.defineProperty(r,"__esModule",{value:!0});var o=function(e){function t(t){var r=this.constructor,n=e.call(this,t)||this;return n.message=t,n.name=r.prototype.constructor.name,Object.setPrototypeOf(n,r.prototype),n}return i(t,e),t}(Error);r.SentryError=o},{}],124:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("@sentry/minimal");r.addBreadcrumb=n.addBreadcrumb,r.captureException=n.captureException,r.captureEvent=n.captureEvent,r.captureMessage=n.captureMessage,r.configureScope=n.configureScope,r.withScope=n.withScope;var i=e("@sentry/hub");r.addGlobalEventProcessor=i.addGlobalEventProcessor,r.getCurrentHub=i.getCurrentHub,r.Hub=i.Hub,r.getHubFromCarrier=i.getHubFromCarrier,r.Scope=i.Scope;var o=e("./api");r.API=o.API;var a=e("./baseclient");r.BaseClient=a.BaseClient;var s=e("./basebackend");r.BaseBackend=s.BaseBackend;var c=e("./dsn");r.Dsn=c.Dsn;var u=e("./error");r.SentryError=u.SentryError;var f=e("./requestbuffer");r.RequestBuffer=f.RequestBuffer;var l=e("./interfaces");r.LogLevel=l.LogLevel;var h=e("./sdk");r.initAndBind=h.initAndBind;var d=e("./integrations");r.Integrations=d},{"./api":119,"./basebackend":120,"./baseclient":121,"./dsn":122,"./error":123,"./integrations":129,"./interfaces":133,"./requestbuffer":134,"./sdk":135,"@sentry/hub":137,"@sentry/minimal":139}],125:[function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var a=e("@sentry/utils/logger");function s(e){var t,r,n,a,s=e.defaultIntegrations&&i(e.defaultIntegrations)||[],c=e.integrations,f=[];if(Array.isArray(c)){var l=c.map((function(e){return e.name})),h=[];try{for(var d=o(s),p=d.next();!p.done;p=d.next()){var m=p.value;-1===l.indexOf(u(m))&&-1===h.indexOf(u(m))&&(f.push(m),h.push(u(m)))}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}try{for(var y=o(c),g=y.next();!g.done;g=y.next()){var b=g.value;-1===h.indexOf(u(b))&&(f.push(b),h.push(u(b)))}}catch(e){n={error:e}}finally{try{g&&!g.done&&(a=y.return)&&a.call(y)}finally{if(n)throw n.error}}}else{if("function"!=typeof c)return i(s);f=c(s),f=Array.isArray(f)?f:[f]}return f}function c(e,t){if(-1===r.installedIntegrations.indexOf(u(e))){try{e.setupOnce()}catch(r){a.logger.warn("Integration "+u(e)+': The install method is deprecated. Use "setupOnce".'),e.install&&e.install(t)}r.installedIntegrations.push(u(e)),a.logger.log("Integration installed: "+u(e))}}function u(e){return e.constructor.id||e.name}r.installedIntegrations=[],r.getIntegrationsToSetup=s,r.setupIntegration=c,r.setupIntegrations=function(e){var t={};return s(e).forEach((function(r){t[u(r)]=r,c(r,e)})),t}},{"@sentry/utils/logger":143}],126:[function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},a=this&&this.__spread||function(){for(var e=[],t=0;t0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&r(!1)}),e);Promise.all(t.buffer).then((function(){clearTimeout(n),r(!0)})).catch((function(){r(!0)}))}))]}))}))},e}();r.RequestBuffer=o},{}],135:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("@sentry/hub"),i=e("@sentry/utils/logger");r.initAndBind=function(e,t){if(!0===t.debug&&i.logger.enable(),!n.getCurrentHub().getClient()){var r=new e(t);n.getCurrentHub().bindClient(r),r.install()}}},{"@sentry/hub":137,"@sentry/utils/logger":143}],136:[function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},o=this&&this.__spread||function(){for(var e=[],t=0;t0?e[e.length-1].scope:void 0,r=c.Scope.clone(t);return this.getStack().push({client:this.getClient(),scope:r}),r},e.prototype.popScope=function(){return void 0!==this.getStack().pop()},e.prototype.withScope=function(e){var t=this.pushScope();try{e(t)}finally{this.popScope()}},e.prototype.getClient=function(){return this.getStackTop().client},e.prototype.getScope=function(){return this.getStackTop().scope},e.prototype.getStack=function(){return this.stack},e.prototype.getStackTop=function(){return this.stack[this.stack.length-1]},e.prototype.captureException=function(e,t){var r=this._lastEventId=s.uuid4();return this.invokeClientAsync("captureException",e,n({},t,{event_id:r})),r},e.prototype.captureMessage=function(e,t,r){var i=this._lastEventId=s.uuid4();return this.invokeClientAsync("captureMessage",e,t,n({},r,{event_id:i})),i},e.prototype.captureEvent=function(e,t){var r=this._lastEventId=s.uuid4();return this.invokeClientAsync("captureEvent",e,n({},t,{event_id:r})),r},e.prototype.lastEventId=function(){return this._lastEventId},e.prototype.addBreadcrumb=function(e,t){this.invokeClient("addBreadcrumb",e,n({},t))},e.prototype.configureScope=function(e){var t=this.getStackTop();t.scope&&t.client&&e(t.scope)},e.prototype.run=function(e){var t=l(this);try{e(this)}finally{l(t)}},e.prototype.getIntegration=function(e){try{return this.getClient().getIntegration(e)}catch(t){return a.logger.warn("Cannot retrieve integration "+e.id+" from the current Hub"),null}},e}();function f(){var e=s.getGlobalObject();return e.__SENTRY__=e.__SENTRY__||{hub:void 0},e}function l(e){var t=f(),r=d(t);return p(t,e),r}function h(e){return!!(e&&e.__SENTRY__&&e.__SENTRY__.hub)}function d(e){return e&&e.__SENTRY__&&e.__SENTRY__.hub?e.__SENTRY__.hub:(e.__SENTRY__={},e.__SENTRY__.hub=new u,e.__SENTRY__.hub)}function p(e,t){return!!e&&(e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.hub=t,!0)}r.Hub=u,r.getMainCarrier=f,r.makeMain=l,r.getCurrentHub=function(){var e=f();h(e)&&!d(e).isOlderThan(r.API_VERSION)||p(e,new u);try{var n=s.dynamicRequire(t,"domain").active;if(!n)return d(e);if(!h(n)||d(n).isOlderThan(r.API_VERSION)){var i=d(e).getStackTop();p(n,new u(i.client,c.Scope.clone(i.scope)))}return d(n)}catch(t){return d(e)}},r.hasHubOnCarrier=h,r.getHubFromCarrier=d,r.setHubOnCarrier=p},{"./scope":138,"@sentry/utils/logger":143,"@sentry/utils/misc":144}],137:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n=e("./scope");r.addGlobalEventProcessor=n.addGlobalEventProcessor,r.Scope=n.Scope;var i=e("./hub");r.getCurrentHub=i.getCurrentHub,r.getHubFromCarrier=i.getHubFromCarrier,r.getMainCarrier=i.getMainCarrier,r.Hub=i.Hub,r.setHubOnCarrier=i.setHubOnCarrier},{"./hub":136,"./scope":138}],138:[function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},s=this&&this.__spread||function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var u=e("@sentry/utils/misc"),f=e("@sentry/utils/object"),l=function(){function e(){this.notifyingListeners=!1,this.scopeListeners=[],this.eventProcessors=[],this.breadcrumbs=[],this.user={},this.tags={},this.extra={}}return e.prototype.addScopeListener=function(e){this.scopeListeners.push(e)},e.prototype.addEventProcessor=function(e){return this.eventProcessors.push(e),this},e.prototype.notifyScopeListeners=function(){var e=this;this.notifyingListeners||(this.notifyingListeners=!0,setTimeout((function(){e.scopeListeners.forEach((function(t){t(e)})),e.notifyingListeners=!1}),0))},e.prototype.notifyEventProcessors=function(e,t){return i(this,void 0,void 0,(function(){var r,i,a,u,f,l,d;return o(this,(function(o){switch(o.label){case 0:a=e,o.label=1;case 1:o.trys.push([1,8,9,10]),u=c(s(h(),this.eventProcessors)),f=u.next(),o.label=2;case 2:if(f.done)return[3,7];l=f.value,o.label=3;case 3:return o.trys.push([3,5,,6]),[4,l(n({},a),t)];case 4:return null===(a=o.sent())?[2,null]:[3,6];case 5:return o.sent(),[3,6];case 6:return f=u.next(),[3,2];case 7:return[3,10];case 8:return d=o.sent(),r={error:d},[3,10];case 9:try{f&&!f.done&&(i=u.return)&&i.call(u)}finally{if(r)throw r.error}return[7];case 10:return[2,a]}}))}))},e.prototype.setUser=function(e){return this.user=e,this.notifyScopeListeners(),this},e.prototype.setTag=function(e,t){var r;return this.tags=n({},this.tags,((r={})[e]=t,r)),this.notifyScopeListeners(),this},e.prototype.setExtra=function(e,t){var r;return this.extra=n({},this.extra,((r={})[e]=t,r)),this.notifyScopeListeners(),this},e.prototype.setFingerprint=function(e){return this.fingerprint=e,this.notifyScopeListeners(),this},e.prototype.setLevel=function(e){return this.level=e,this.notifyScopeListeners(),this},e.clone=function(t){var r=new e;return f.assign(r,t,{scopeListeners:[]}),t&&(r.extra=f.assign(t.extra),r.tags=f.assign(t.tags),r.breadcrumbs=s(t.breadcrumbs),r.eventProcessors=s(t.eventProcessors)),r},e.prototype.clear=function(){this.breadcrumbs=[],this.tags={},this.extra={},this.user={},this.level=void 0,this.fingerprint=void 0,this.notifyScopeListeners()},e.prototype.addBreadcrumb=function(e,t){this.breadcrumbs=void 0!==t&&t>=0?s(this.breadcrumbs,[e]).slice(-t):s(this.breadcrumbs,[e]),this.notifyScopeListeners()},e.prototype.applyToEvent=function(e,t,r){return i(this,void 0,void 0,(function(){return o(this,(function(i){return this.extra&&Object.keys(this.extra).length&&(e.extra=n({},this.extra,e.extra)),this.tags&&Object.keys(this.tags).length&&(e.tags=n({},this.tags,e.tags)),this.user&&Object.keys(this.user).length&&(e.user=n({},this.user,e.user)),this.fingerprint&&void 0===e.fingerprint&&(e.fingerprint=this.fingerprint),this.level&&(e.level=this.level),(!e.breadcrumbs||0===e.breadcrumbs.length)&&this.breadcrumbs.length>0&&(e.breadcrumbs=void 0!==r&&r>=0?this.breadcrumbs.slice(-r):this.breadcrumbs),[2,this.notifyEventProcessors(e,t)]}))}))},e}();function h(){var e=u.getGlobalObject();return e.__SENTRY__=e.__SENTRY__||{},e.__SENTRY__.globalEventProcessors=e.__SENTRY__.globalEventProcessors||[],e.__SENTRY__.globalEventProcessors}r.Scope=l,r.addGlobalEventProcessor=function(e){h().push(e)}},{"@sentry/utils/misc":144,"@sentry/utils/object":145}],139:[function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a},i=this&&this.__spread||function(){for(var e=[],t=0;t=200&&t<300?e.Success:429===t?e.RateLimit:t>=400&&t<500?e.Invalid:t>=500?e.Failed:e.Unknown}}(r.Status||(r.Status={}))},{}],141:[function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(i=2&o[0]?n.return:o[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,o[1])).done)return i;switch(n=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,n=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1] ".length;r&&i++<5&&!("html"===(t=s(r))||i>1&&o+n.length*a+t.length>=80);)n.push(t),o+=t.length,r=r.parentNode;return n.reverse().join(" > ")},r.htmlElementAsString=s,r.parseUrl=function(e){if(!e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!t)return{};var r=t[6]||"",n=t[8]||"";return{host:t[4],path:t[5],protocol:t[2],relative:t[5]+r+n}},r.getEventDescription=function(e){if(e.message)return e.message;if(e.exception&&e.exception.values&&e.exception.values[0]){var t=e.exception.values[0];return t.type&&t.value?t.type+": "+t.value:t.type||t.value||e.event_id||""}return e.event_id||""},r.consoleSandbox=function(e){var t=a();if(!("console"in t))return e();var r=t.console,n={};["debug","info","warn","error","log"].forEach((function(e){e in t.console&&r[e].__sentry__&&(n[e]=r[e].__sentry_wrapped__,r[e]=r[e].__sentry_original__)}));var i=e();return Object.keys(n).forEach((function(e){r[e]=n[e]})),i}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./is":142,_process:898}],145:[function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i=e("./is");var o="[NaN]",a="[undefined]";function s(){var e=[],t=[],r=function(r,n){return e[0]===n?"[Circular ~]":"[Circular ~."+t.slice(0,e.indexOf(n)).join(".")+"]"};return function(n,s){var c=s;if(i.isNaN(s)?c=o:i.isUndefined(s)&&(c=a),e.length>0){var u=e.indexOf(this);-1!==u?(e.splice(u+1),t.splice(u,1/0,n)):(e.push(this),t.push(n)),-1!==e.indexOf(c)&&(c=r.call(this,n,c))}else e.push(c);return c instanceof Error?function(e){var t={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}(c):c}}function c(e,t){return t===o?NaN:t!==a?t:void 0}function u(e){return JSON.stringify(e,s())}function f(e){return JSON.parse(e,c)}r.serialize=u,r.deserialize=f,r.clone=function(e){return f(u(e))},r.fill=function(e,t,r){if(t in e&&!e[t].__sentry__){var n=e[t],i=r(n);i.__sentry__=!0,i.__sentry_original__=n,i.__sentry_wrapped__=i,e[t]=i}},r.urlEncode=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")};var l=3,h=51200,d=40;function p(e){return function(e){return~-encodeURI(e).split(/%..|./).length}(JSON.stringify(e))}function m(e){if("string"==typeof e)return e.length<=40?e:e.substr(0,39)+"…";if("number"==typeof e||"boolean"==typeof e||void 0===e)return e;if(i.isNaN(e))return"[NaN]";if(i.isUndefined(e))return"[undefined]";var t=Object.prototype.toString.call(e);if("[object Object]"===t)return"[Object]";if("[object Array]"===t)return"[Array]";if("[object Function]"===t){var r=e.name;return r?"[Function: "+r+"]":"[Function]"}return e}function y(e,t){if(0===t)return m(e);if(i.isPlainObject(e)){var r={},n=e;return Object.keys(n).forEach((function(e){r[e]=y(n[e],t-1)})),r}return Array.isArray(e)?e.map((function(e){return y(e,t-1)})):m(e)}r.serializeObject=y,r.limitObjectDepthToSize=function e(t,r,n){void 0===r&&(r=l),void 0===n&&(n=h);var i=y(t,r);return p(u(i))>n?e(t,r-1):i},r.serializeKeysToEventMessage=function(e,t){if(void 0===t&&(t=d),!e.length)return"[object has no keys]";if(e[0].length>=t)return e[0];for(var r=e.length;r>0;r--){var n=e.slice(0,r).join(", ");if(!(n.length>t))return r===e.length?n:n+"…"}return""},r.assign=function(e){for(var t,r,i=[],o=1;o=0;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}Object.defineProperty(r,"__esModule",{value:!0});var i=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;function o(e){var t=i.exec(e);return t?t.slice(1):[]}function a(){for(var e=[],t=0;t=-1&&!i;o--){var a=o>=0?e[o]:"/";a&&(r=a+"/"+r,i="/"===a.charAt(0))}return(i?"/":"")+(r=n(r.split("/").filter((function(e){return!!e})),!i).join("/"))||"."}function s(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}function c(e){var t=u(e),r="/"===e.substr(-1),i=n(e.split("/").filter((function(e){return!!e})),!t).join("/");return i||t||(i="."),i&&r&&(i+="/"),(t?"/":"")+i}function u(e){return"/"===e.charAt(0)}r.resolve=a,r.relative=function(e,t){e=a(e).substr(1),t=a(t).substr(1);for(var r=s(e.split("/")),n=s(t.split("/")),i=Math.min(r.length,n.length),o=i,c=0;c=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}};Object.defineProperty(r,"__esModule",{value:!0});var i=e("./is");r.truncate=function(e,t){return void 0===t&&(t=0),0!==t&&i.isString(e)?e.length<=t?e:e.substr(0,t)+"…":e},r.snipLine=function(e,t){var r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);var i=Math.max(t-60,0);i<5&&(i=0);var o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r="'{snip} "+r),oe.length)&&-1!==e.indexOf(t)}},{"./is":142}],148:[function(e,t,r){const n=e("web3/lib/solidity/coder.js"),i=e("web3"),o={savedABIs:[],methodIDs:{}};t.exports={getABIs:function(){return o.savedABIs},addABI:function(e){if(!Array.isArray(e))throw new Error("Expected ABI array, got "+typeof e);e.map((function(e){if(e.name){const t=(new i).sha3(e.name+"("+e.inputs.map((function(e){return e.type})).join(",")+")");"event"==e.type?o.methodIDs[t.slice(2)]=e:o.methodIDs[t.slice(2,10)]=e}})),o.savedABIs=o.savedABIs.concat(e)},getMethodIDs:function(){return o.methodIDs},decodeMethod:function(e){const t=e.slice(2,10),r=o.methodIDs[t];if(r){const t=r.inputs.map((function(e){return e.type}));let o=n.decodeParams(t,e.slice(10));return{name:r.name,params:o.map((function(e,t){let n=e;const o=0==r.inputs[t].type.indexOf("uint"),a=0==r.inputs[t].type.indexOf("int");if(o||a){n=Array.isArray(e)?e.map(e=>(new i).toBigNumber(e).toString()):(new i).toBigNumber(e).toString()}return{name:r.inputs[t].name,value:n,type:r.inputs[t].type}}))}}},decodeLogs:function(e){return e.map((function(e){const t=e.topics[0].slice(2),r=o.methodIDs[t];if(r){const t=e.data;let o=[],a=0,s=1,c=[];r.inputs.map((function(e){e.indexed||c.push(e.type)}));const u=n.decodeParams(c,t.slice(2));return r.inputs.map((function(t){var r={name:t.name,type:t.type};t.indexed?(r.value=e.topics[s],s++):(r.value=u[a],a++),"address"==t.type?r.value=function(e){var t=e;if(-1!=e.indexOf("0x")&&(t=e.slice(2)),t.length<40)for(;t.length<40;)t="0"+t;return"0x"+t}((new i).toBigNumber(r.value).toString(16)):"uint256"!=t.type&&"uint8"!=t.type&&"int"!=t.type||(r.value=(new i).toBigNumber(r.value).toString(10)),o.push(r)})),{name:r.name,events:o,address:e.address}}}))},removeABI:function(e){if(!Array.isArray(e))throw new Error("Expected ABI array, got "+typeof e);e.map((function(e){if(e.name){const t=(new i).sha3(e.name+"("+e.inputs.map((function(e){return e.type})).join(",")+")");"event"==e.type?o.methodIDs[t.slice(2)]&&delete o.methodIDs[t.slice(2)]:o.methodIDs[t.slice(2,10)]&&delete o.methodIDs[t.slice(2,10)]}}))}}},{web3:150,"web3/lib/solidity/coder.js":157}],149:[function(e,t,r){!function(r){"use strict";var n,i,o,a=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,s=Math.ceil,c=Math.floor,u=" not a boolean or binary digit",f="rounding mode",l="number type has more than 15 significant digits",h="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_",d=1e14,p=14,m=9007199254740991,y=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,b=1e9;function v(e){var t=0|e;return e>0||e===t?t:t-1}function w(e){for(var t,r,n=1,i=e.length,o=e[0]+"";nu^r?1:-1;for(s=(c=i.length)<(u=o.length)?c:u,a=0;ao[a]^r?1:-1;return c==u?0:c>u^r?1:-1}function _(e,t,r){return(e=T(e))>=t&&e<=r}function k(e){return"[object Array]"==Object.prototype.toString.call(e)}function S(e,t,r){for(var n,i,o=[0],a=0,s=e.length;ar-1&&(null==o[n+1]&&(o[n+1]=0),o[n+1]+=o[n]/r|0,o[n]%=r)}return o.reverse()}function E(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function A(e,t){var r,n;if(t<0){for(n="0.";++t;n+="0");e=n+e}else if(++t>(r=e.length)){for(n="0",t-=r;--t;n+="0");e+=n}else t15&&ee(P,l,e),s=!1):f.s=45===u.charCodeAt(0)?(u=u.slice(1),-1):1,u=J(u,10,t,f.s)}else{if(e instanceof $)return f.s=e.s,f.e=e.e,f.c=(e=e.c)?e.slice():e,void(P=0);if((s="number"==typeof e)&&0*e==0){if(f.s=1/e<0?(e=-e,-1):1,e===~~e){for(n=0,i=e;i>=10;i/=10,n++);return f.e=n,f.c=[e],void(P=0)}u=e+""}else{if(!a.test(u=e+""))return o(f,u,s);f.s=45===u.charCodeAt(0)?(u=u.slice(1),-1):1}}for((n=u.indexOf("."))>-1&&(u=u.replace(".","")),(i=u.search(/e/i))>0?(n<0&&(n=i),n+=+u.slice(i+1),u=u.substring(0,i)):n<0&&(n=u.length),i=0;48===u.charCodeAt(i);i++);for(c=u.length;48===u.charCodeAt(--c););if(u=u.slice(i,c+1))if(c=u.length,s&&q&&c>15&&ee(P,l,f.s*e),(n=n-i-1)>z)f.c=f.e=null;else if(n=0&&(s=W,W=0,e=e.replace(".",""),u=(l=new $(n)).pow(e.length-d),W=s,l.c=S(A(w(u.c),u.e),10,t),l.e=l.c.length),a=s=(f=S(e,n,t)).length;0==f[--s];f.pop());if(!f[0])return"0";if(d<0?--a:(u.c=f,u.e=a,u.s=i,f=(u=r(u,l,p,m,t)).c,c=u.r,a=u.e),d=f[o=a+p+1],s=t/2,c=c||o<0||null!=f[o+1],c=m<4?(null!=d||c)&&(0==m||m==(u.s<0?3:2)):d>s||d==s&&(4==m||c||6==m&&1&f[o-1]||m==(u.s<0?8:7)),o<1||!f[0])e=c?A("1",-p):"0";else{if(f.length=o,c)for(--t;++f[--o]>t;)f[o]=0,o||(++a,f.unshift(1));for(s=f.length;!f[--s];);for(d=0,e="";d<=s;e+=h.charAt(f[d++]));e=A(e,a)}return e}function Q(e,t,r,n){var i,o,a,s,c;if(r=null!=r&&H(r,0,8,n,f)?0|r:R,!e.c)return e.toString();if(i=e.c[0],a=e.e,null==t)c=w(e.c),c=19==n||24==n&&a<=L?E(c,a):A(c,a);else if(o=(e=te(new $(e),t,r)).e,s=(c=w(e.c)).length,19==n||24==n&&(t<=o||o<=L)){for(;ss){if(--t>0)for(c+=".";t--;c+="0");}else if((t+=o-s)>0)for(o+1==s&&(c+=".");t--;c+="0");return e.s<0&&i?"-"+c:c}function Y(e,t){var r,n,i=0;for(k(e[0])&&(e=e[0]),r=new $(e[0]);++ir||e!=T(e))&&ee(n,(i||"decimal places")+(er?" out of range":" not an integer"),e),!0}function X(e,t,r){for(var n=1,i=t.length;!t[--i];t.pop());for(i=t[0];i>=10;i/=10,n++);return(r=n+r*p-1)>z?e.c=e.e=null:r=10;u/=10,i++);if((o=t-i)<0)o+=p,a=t,h=(f=m[l=0])/g[i-a-1]%10|0;else if((l=s((o+1)/p))>=m.length){if(!n)break e;for(;m.length<=l;m.push(0));f=h=0,i=1,a=(o%=p)-p+1}else{for(f=u=m[l],i=1;u>=10;u/=10,i++);h=(a=(o%=p)-p+i)<0?0:f/g[i-a-1]%10|0}if(n=n||t<0||null!=m[l+1]||(a<0?f:f%g[i-a-1]),n=r<4?(h||n)&&(0==r||r==(e.s<0?3:2)):h>5||5==h&&(4==r||n||6==r&&(o>0?a>0?f/g[i-a]:0:m[l-1])%10&1||r==(e.s<0?8:7)),t<1||!m[0])return m.length=0,n?(t-=e.e+1,m[0]=g[t%p],e.e=-t||0):m[0]=e.e=0,e;if(0==o?(m.length=l,u=1,l--):(m.length=l+1,u=g[p-o],m[l]=a>0?c(f/g[i-a]%g[a])*u:0),n)for(;;){if(0==l){for(o=1,a=m[0];a>=10;a/=10,o++);for(a=m[0]+=u,u=1;a>=10;a/=10,u++);o!=u&&(e.e++,m[0]==d&&(m[0]=1));break}if(m[l]+=u,m[l]!=d)break;m[l--]=0,u=1}for(o=m.length;0===m[--o];m.pop());}e.e>z?e.c=e.e=null:e.er)return null!=(e=o[r++])};return s(t="DECIMAL_PLACES")&&H(e,0,b,2,t)&&(D=0|e),n[t]=D,s(t="ROUNDING_MODE")&&H(e,0,8,2,t)&&(R=0|e),n[t]=R,s(t="EXPONENTIAL_AT")&&(k(e)?H(e[0],-b,0,2,t)&&H(e[1],0,b,2,t)&&(L=0|e[0],U=0|e[1]):H(e,-b,b,2,t)&&(L=-(U=0|(e<0?-e:e)))),n[t]=[L,U],s(t="RANGE")&&(k(e)?H(e[0],-b,-1,2,t)&&H(e[1],1,b,2,t)&&(F=0|e[0],z=0|e[1]):H(e,-b,b,2,t)&&(0|e?F=-(z=0|(e<0?-e:e)):q&&ee(2,t+" cannot be zero",e))),n[t]=[F,z],s(t="ERRORS")&&(e===!!e||1===e||0===e?(P=0,H=(q=!!e)?Z:_):q&&ee(2,t+u,e)),n[t]=q,s(t="CRYPTO")&&(e===!!e||1===e||0===e?(K=!(!e||!i||"object"!=typeof i),e&&!K&&q&&ee(2,"crypto unavailable",i)):q&&ee(2,t+u,e)),n[t]=K,s(t="MODULO_MODE")&&H(e,0,9,2,t)&&(V=0|e),n[t]=V,s(t="POW_PRECISION")&&H(e,0,b,2,t)&&(W=0|e),n[t]=W,s(t="FORMAT")&&("object"==typeof e?G=e:q&&ee(2,t+" not an object",e)),n[t]=G,n},$.max=function(){return Y(arguments,I.lt)},$.min=function(){return Y(arguments,I.gt)},$.random=(n=9007199254740992*Math.random()&2097151?function(){return c(9007199254740992*Math.random())}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,r,o,a,u,f=0,l=[],h=new $(N);if(e=null!=e&&H(e,0,b,14)?0|e:D,a=s(e/p),K)if(i&&i.getRandomValues){for(t=i.getRandomValues(new Uint32Array(a*=2));f>>11))>=9e15?(r=i.getRandomValues(new Uint32Array(2)),t[f]=r[0],t[f+1]=r[1]):(l.push(u%1e14),f+=2);f=a/2}else if(i&&i.randomBytes){for(t=i.randomBytes(a*=7);f=9e15?i.randomBytes(7).copy(t,f):(l.push(u%1e14),f+=7);f=a/7}else q&&ee(14,"crypto unavailable",i);if(!f)for(;f=10;u/=10,f++);fn?1:-1;else for(i=o=0;it[i]?1:-1;break}return o}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]1;e.shift());}return function(n,i,o,a,s){var u,f,l,h,m,y,g,b,w,x,_,k,S,E,A,T,C,j=n.s==i.s?1:-1,M=n.c,B=i.c;if(!(M&&M[0]&&B&&B[0]))return new $(n.s&&i.s&&(M?!B||M[0]!=B[0]:B)?M&&0==M[0]||!B?0*j:j/0:NaN);for(w=(b=new $(j)).c=[],j=o+(f=n.e-i.e)+1,s||(s=d,f=v(n.e/p)-v(i.e/p),j=j/p|0),l=0;B[l]==(M[l]||0);l++);if(B[l]>(M[l]||0)&&f--,j<0)w.push(1),h=!0;else{for(E=M.length,T=B.length,l=0,j+=2,(m=c(s/(B[0]+1)))>1&&(B=e(B,m,s),M=e(M,m,s),T=B.length,E=M.length),S=T,_=(x=M.slice(0,T)).length;_=s/2&&A++;do{if(m=0,(u=t(B,x,T,_))<0){if(k=x[0],T!=_&&(k=k*s+(x[1]||0)),(m=c(k/A))>1)for(m>=s&&(m=s-1),g=(y=e(B,m,s)).length,_=x.length;1==t(y,x,g,_);)m--,r(y,T=10;j/=10,l++);te(b,o+(b.e=l+f*p-1)+1,a,h)}else b.e=f,b.r=+h;return b}}(),C=/^(-?)0([xbo])/i,j=/^([^.]+)\.$/,M=/^\.([^.]+)$/,B=/^-?(Infinity|NaN)$/,O=/^\s*\+|^\s+|\s+$/g,o=function(e,t,r,n){var i,o=r?t:t.replace(O,"");if(B.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(C,(function(e,t,r){return i="x"==(r=r.toLowerCase())?16:"b"==r?2:8,n&&n!=i?e:t})),n&&(i=n,o=o.replace(j,"$1").replace(M,"0.$1")),t!=o))return new $(o,i);q&&ee(P,"not a"+(n?" base "+n:"")+" number",t),e.s=null}e.c=e.e=null,P=0},I.absoluteValue=I.abs=function(){var e=new $(this);return e.s<0&&(e.s=1),e},I.ceil=function(){return te(new $(this),this.e+1,2)},I.comparedTo=I.cmp=function(e,t){return P=1,x(this,new $(e,t))},I.decimalPlaces=I.dp=function(){var e,t,r=this.c;if(!r)return null;if(e=((t=r.length-1)-v(this.e/p))*p,t=r[t])for(;t%10==0;t/=10,e--);return e<0&&(e=0),e},I.dividedBy=I.div=function(e,t){return P=3,r(this,new $(e,t),D,R)},I.dividedToIntegerBy=I.divToInt=function(e,t){return P=4,r(this,new $(e,t),0,1)},I.equals=I.eq=function(e,t){return P=5,0===x(this,new $(e,t))},I.floor=function(){return te(new $(this),this.e+1,3)},I.greaterThan=I.gt=function(e,t){return P=6,x(this,new $(e,t))>0},I.greaterThanOrEqualTo=I.gte=function(e,t){return P=7,1===(t=x(this,new $(e,t)))||0===t},I.isFinite=function(){return!!this.c},I.isInteger=I.isInt=function(){return!!this.c&&v(this.e/p)>this.c.length-2},I.isNaN=function(){return!this.s},I.isNegative=I.isNeg=function(){return this.s<0},I.isZero=function(){return!!this.c&&0==this.c[0]},I.lessThan=I.lt=function(e,t){return P=8,x(this,new $(e,t))<0},I.lessThanOrEqualTo=I.lte=function(e,t){return P=9,-1===(t=x(this,new $(e,t)))||0===t},I.minus=I.sub=function(e,t){var r,n,i,o,a=this,s=a.s;if(P=10,t=(e=new $(e,t)).s,!s||!t)return new $(NaN);if(s!=t)return e.s=-t,a.plus(e);var c=a.e/p,u=e.e/p,f=a.c,l=e.c;if(!c||!u){if(!f||!l)return f?(e.s=-t,e):new $(l?a:NaN);if(!f[0]||!l[0])return l[0]?(e.s=-t,e):new $(f[0]?a:3==R?-0:0)}if(c=v(c),u=v(u),f=f.slice(),s=c-u){for((o=s<0)?(s=-s,i=f):(u=c,i=l),i.reverse(),t=s;t--;i.push(0));i.reverse()}else for(n=(o=(s=f.length)<(t=l.length))?s:t,s=t=0;t0)for(;t--;f[r++]=0);for(t=d-1;n>s;){if(f[--n]0?(a=o,r=c):(i=-i,r=s),r.reverse();i--;r.push(0));r.reverse()}for((i=s.length)-(t=c.length)<0&&(r=c,c=s,s=r,t=i),i=0;t;)i=(s[--t]=s[t]+c[t]+i)/d|0,s[t]%=d;return i&&(s.unshift(i),++a),X(e,s,a)},I.precision=I.sd=function(e){var t,r,n=this,i=n.c;if(null!=e&&e!==!!e&&1!==e&&0!==e&&(q&&ee(13,"argument"+u,e),e!=!!e&&(e=null)),!i)return null;if(t=(r=i.length-1)*p+1,r=i[r]){for(;r%10==0;r/=10,t--);for(r=i[0];r>=10;r/=10,t++);}return e&&n.e+1>t&&(t=n.e+1),t},I.round=function(e,t){var r=new $(this);return(null==e||H(e,0,b,15))&&te(r,~~e+this.e+1,null!=t&&H(t,0,8,15,f)?0|t:R),r},I.shift=function(e){var t=this;return H(e,-m,m,16,"argument")?t.times("1e"+T(e)):new $(t.c&&t.c[0]&&(e<-m||e>m)?t.s*(e<0?0:1/0):t)},I.squareRoot=I.sqrt=function(){var e,t,n,i,o,a=this,s=a.c,c=a.s,u=a.e,f=D+4,l=new $("0.5");if(1!==c||!s||!s[0])return new $(!c||c<0&&(!s||s[0])?NaN:s?a:1/0);if(0==(c=Math.sqrt(+a))||c==1/0?(((t=w(s)).length+u)%2==0&&(t+="0"),c=Math.sqrt(t),u=v((u+1)/2)-(u<0||u%2),n=new $(t=c==1/0?"1e"+u:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+u)):n=new $(c+""),n.c[0])for((c=(u=n.e)+f)<3&&(c=0);;)if(o=n,n=l.times(o.plus(r(a,o,f,1))),w(o.c).slice(0,c)===(t=w(n.c)).slice(0,c)){if(n.e=0;){for(r=0,h=k[i]%w,m=k[i]/w|0,o=i+(a=c);o>i;)r=((u=h*(u=_[--a]%w)+(s=m*u+(f=_[a]/w|0)*h)%w*w+y[o]+r)/b|0)+(s/w|0)+m*f,y[o--]=u%b;y[o]=r}return r?++n:y.shift(),X(e,y,n)},I.toDigits=function(e,t){var r=new $(this);return e=null!=e&&H(e,1,b,18,"precision")?0|e:null,t=null!=t&&H(t,0,8,18,f)?0|t:R,e?te(r,e,t):r},I.toExponential=function(e,t){return Q(this,null!=e&&H(e,0,b,19)?1+~~e:null,t,19)},I.toFixed=function(e,t){return Q(this,null!=e&&H(e,0,b,20)?~~e+this.e+1:null,t,20)},I.toFormat=function(e,t){var r=Q(this,null!=e&&H(e,0,b,21)?~~e+this.e+1:null,t,21);if(this.c){var n,i=r.split("."),o=+G.groupSize,a=+G.secondaryGroupSize,s=G.groupSeparator,c=i[0],u=i[1],f=this.s<0,l=f?c.slice(1):c,h=l.length;if(a&&(n=o,o=a,a=n,h-=n),o>0&&h>0){for(n=h%o||o,c=l.substr(0,n);n0&&(c+=s+l.slice(n)),f&&(c="-"+c)}r=u?c+G.decimalSeparator+((a=+G.fractionGroupSize)?u.replace(new RegExp("\\d{"+a+"}\\B","g"),"$&"+G.fractionGroupSeparator):u):c}return r},I.toFraction=function(e){var t,n,i,o,a,s,c,u,f,l=q,h=this,d=h.c,m=new $(N),g=n=new $(N),b=c=new $(N);if(null!=e&&(q=!1,s=new $(e),q=l,(l=s.isInt())&&!s.lt(N)||(q&&ee(22,"max denominator "+(l?"out of range":"not an integer"),e),e=!l&&s.c&&te(s,s.e+1,1).gte(N)?s:null)),!d)return h.toString();for(f=w(d),o=m.e=f.length-h.e-1,m.c[0]=y[(a=o%p)<0?p+a:a],e=!e||s.cmp(m)>0?o>0?m:g:s,a=z,z=1/0,s=new $(f),c.c[0]=0;u=r(s,m,0,1),1!=(i=n.plus(u.times(b))).cmp(e);)n=b,b=i,g=c.plus(u.times(i=g)),c=i,m=s.minus(u.times(i=m)),s=i;return i=r(e.minus(n),b,0,1),c=c.plus(i.times(g)),n=n.plus(i.times(b)),c.s=g.s=h.s,t=r(g,b,o*=2,R).minus(h).abs().cmp(r(c,n,o,R).minus(h).abs())<1?[g.toString(),b.toString()]:[c.toString(),n.toString()],z=a,t},I.toNumber=function(){var e=this;return+e||(e.s?0*e.s:NaN)},I.toPower=I.pow=function(e){var t,r,n=c(e<0?-e:+e),i=this;if(!H(e,-m,m,23,"exponent")&&(!isFinite(e)||n>m&&(e/=0)||parseFloat(e)!=e&&!(e=NaN)))return new $(Math.pow(+i,e));for(t=W?s(W/p+2):0,r=new $(N);;){if(n%2){if(!(r=r.times(i)).c)break;t&&r.c.length>t&&(r.c.length=t)}if(!(n=c(n/2)))break;i=i.times(i),t&&i.c&&i.c.length>t&&(i.c.length=t)}return e<0&&(r=N.div(r)),t?te(r,W,R):r},I.toPrecision=function(e,t){return Q(this,null!=e&&H(e,1,b,24,"precision")?0|e:null,t,24)},I.toString=function(e){var t,r=this,n=r.s,i=r.e;return null===i?n?(t="Infinity",n<0&&(t="-"+t)):t="NaN":(t=w(r.c),t=null!=e&&H(e,2,64,25,"base")?J(A(t,i),0|e,10,n):i<=L||i>=U?E(t,i):A(t,i),n<0&&r.c[0]&&(t="-"+t)),t},I.truncated=I.trunc=function(){return te(new $(this),this.e+1,1)},I.valueOf=I.toJSON=function(){return this.toString()},null!=t&&$.config(t),$}(),"function"==typeof define&&define.amd)define((function(){return n}));else if(void 0!==t&&t.exports){if(t.exports=n,!i)try{i=e("crypto")}catch(e){}}else r.BigNumber=n}(this)},{crypto:382}],150:[function(e,t,r){var n=e("./lib/web3");"undefined"!=typeof window&&void 0===window.Web3&&(window.Web3=n),t.exports=n},{"./lib/web3":172}],151:[function(e,t,r){t.exports=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"name",outputs:[{name:"o_name",type:"bytes32"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"owner",outputs:[{name:"",type:"address"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"content",outputs:[{name:"",type:"bytes32"}],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"addr",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"reserve",outputs:[],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"subRegistrar",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_newOwner",type:"address"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_registrar",type:"address"}],name:"setSubRegistrar",outputs:[],type:"function"},{constant:!1,inputs:[],name:"Registrar",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_a",type:"address"},{name:"_primary",type:"bool"}],name:"setAddress",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_content",type:"bytes32"}],name:"setContent",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"disown",outputs:[],type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_name",type:"bytes32"},{indexed:!1,name:"_winner",type:"address"}],name:"AuctionEnded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_name",type:"bytes32"},{indexed:!1,name:"_bidder",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"NewBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"}],name:"Changed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"},{indexed:!0,name:"addr",type:"address"}],name:"PrimaryChanged",type:"event"}]},{}],152:[function(e,t,r){t.exports=[{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"owner",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_refund",type:"address"}],name:"disown",outputs:[],type:"function"},{constant:!0,inputs:[{name:"_name",type:"bytes32"}],name:"addr",outputs:[{name:"",type:"address"}],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"}],name:"reserve",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_newOwner",type:"address"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"_name",type:"bytes32"},{name:"_a",type:"address"}],name:"setAddr",outputs:[],type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"name",type:"bytes32"}],name:"Changed",type:"event"}]},{}],153:[function(e,t,r){t.exports=[{constant:!1,inputs:[{name:"from",type:"bytes32"},{name:"to",type:"address"},{name:"value",type:"uint256"}],name:"transfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"from",type:"bytes32"},{name:"to",type:"address"},{name:"indirectId",type:"bytes32"},{name:"value",type:"uint256"}],name:"icapTransfer",outputs:[],type:"function"},{constant:!1,inputs:[{name:"to",type:"bytes32"}],name:"deposit",outputs:[],payable:!0,type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"AnonymousDeposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"bytes32"},{indexed:!1,name:"value",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"bytes32"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"bytes32"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"indirectId",type:"bytes32"},{indexed:!1,name:"value",type:"uint256"}],name:"IcapTransfer",type:"event"}]},{}],154:[function(e,t,r){var n=e("./formatters"),i=e("./type"),o=function(){this._inputFormatter=n.formatInputInt,this._outputFormatter=n.formatOutputAddress};(o.prototype=new i({})).constructor=o,o.prototype.isType=function(e){return!!e.match(/address(\[([0-9]*)\])?/)},t.exports=o},{"./formatters":159,"./type":164}],155:[function(e,t,r){var n=e("./formatters"),i=e("./type"),o=function(){this._inputFormatter=n.formatInputBool,this._outputFormatter=n.formatOutputBool};(o.prototype=new i({})).constructor=o,o.prototype.isType=function(e){return!!e.match(/^bool(\[([0-9]*)\])*$/)},t.exports=o},{"./formatters":159,"./type":164}],156:[function(e,t,r){var n=e("./formatters"),i=e("./type"),o=function(){this._inputFormatter=n.formatInputBytes,this._outputFormatter=n.formatOutputBytes};(o.prototype=new i({})).constructor=o,o.prototype.isType=function(e){return!!e.match(/^bytes([0-9]{1,})(\[([0-9]*)\])*$/)},t.exports=o},{"./formatters":159,"./type":164}],157:[function(e,t,r){var n=e("./formatters"),i=e("./address"),o=e("./bool"),a=e("./int"),s=e("./uint"),c=e("./dynamicbytes"),u=e("./string"),f=e("./real"),l=e("./ureal"),h=e("./bytes"),d=function(e,t){return e.isDynamicType(t)||e.isDynamicArray(t)},p=function(e){this._types=e};p.prototype._requireType=function(e){var t=this._types.filter((function(t){return t.isType(e)}))[0];if(!t)throw Error("invalid solidity type!: "+e);return t},p.prototype.encodeParam=function(e,t){return this.encodeParams([e],[t])},p.prototype.encodeParams=function(e,t){var r=this.getSolidityTypes(e),n=r.map((function(r,n){return r.encode(t[n],e[n])})),i=r.reduce((function(t,n,i){var o=n.staticPartLength(e[i]),a=32*Math.floor((o+31)/32);return t+(d(r[i],e[i])?32:a)}),0);return this.encodeMultiWithOffset(e,r,n,i)},p.prototype.encodeMultiWithOffset=function(e,t,r,i){var o="",a=this;return e.forEach((function(s,c){if(d(t[c],e[c])){o+=n.formatInputInt(i).encode();var u=a.encodeWithOffset(e[c],t[c],r[c],i);i+=u.length/2}else o+=a.encodeWithOffset(e[c],t[c],r[c],i)})),e.forEach((function(n,s){if(d(t[s],e[s])){var c=a.encodeWithOffset(e[s],t[s],r[s],i);i+=c.length/2,o+=c}})),o},p.prototype.encodeWithOffset=function(e,t,r,i){var o,a,s,c=this;return t.isDynamicArray(e)?(o=t.nestedName(e),a=t.staticPartLength(o),s=r[0],function(){var e=2;if(t.isDynamicArray(o))for(var c=1;c2&&"0x"===e.substr(0,2)&&(e=e.substr(2)),e=n.enc.Hex.parse(e)),i(e,{outputLength:256}).toString()}},{"crypto-js":394,"crypto-js/sha3":415}],170:[function(e,t,r){var n=e("bignumber.js"),i=e("./sha3.js"),o=e("utf8"),a={noether:"0",wei:"1",kwei:"1000",Kwei:"1000",babbage:"1000",femtoether:"1000",mwei:"1000000",Mwei:"1000000",lovelace:"1000000",picoether:"1000000",gwei:"1000000000",Gwei:"1000000000",shannon:"1000000000",nanoether:"1000000000",nano:"1000000000",szabo:"1000000000000",microether:"1000000000000",micro:"1000000000000",finney:"1000000000000000",milliether:"1000000000000000",milli:"1000000000000000",ether:"1000000000000000000",kether:"1000000000000000000000",grand:"1000000000000000000000",mether:"1000000000000000000000000",gether:"1000000000000000000000000000",tether:"1000000000000000000000000000000"},s=function(e,t,r){return new Array(t-e.length+1).join(r||"0")+e},c=function(e){e=o.encode(e);for(var t="",r=0;r7&&e[r].toUpperCase()!==e[r]||parseInt(t[r],16)<=7&&e[r].toLowerCase()!==e[r])return!1;return!0},y=function(e){return e instanceof n||e&&e.constructor&&"BigNumber"===e.constructor.name},g=function(e){return"string"==typeof e||e&&e.constructor&&"String"===e.constructor.name},b=function(e){return"object"==typeof e},v=function(e){return"boolean"==typeof e};t.exports={padLeft:s,padRight:function(e,t,r){return e+new Array(t-e.length+1).join(r||"0")},toHex:l,toDecimal:function(e){return d(e).toNumber()},fromDecimal:f,toUtf8:function(e){var t="",r=0,n=e.length;for("0x"===e.substring(0,2)&&(r=2);r7?r+=e[n].toUpperCase():r+=e[n];return r},isFunction:function(e){return"function"==typeof e},isString:g,isObject:b,isBoolean:v,isArray:function(e){return e instanceof Array},isJson:function(e){try{return!!JSON.parse(e)}catch(e){return!1}},isBloom:function(e){return!!/^(0x)?[0-9a-f]{512}$/i.test(e)&&!(!/^(0x)?[0-9a-f]{512}$/.test(e)&&!/^(0x)?[0-9A-F]{512}$/.test(e))},isTopic:function(e){return!!/^(0x)?[0-9a-f]{64}$/i.test(e)&&!(!/^(0x)?[0-9a-f]{64}$/.test(e)&&!/^(0x)?[0-9A-F]{64}$/.test(e))}}},{"./sha3.js":169,"bignumber.js":149,utf8:1358}],171:[function(e,t,r){t.exports={version:"0.18.4"}},{}],172:[function(e,t,r){var n=e("./web3/requestmanager"),i=e("./web3/iban"),o=e("./web3/methods/eth"),a=e("./web3/methods/db"),s=e("./web3/methods/shh"),c=e("./web3/methods/net"),u=e("./web3/methods/personal"),f=e("./web3/methods/swarm"),l=e("./web3/settings"),h=e("./version.json"),d=e("./utils/utils"),p=e("./utils/sha3"),m=e("./web3/extend"),y=e("./web3/batch"),g=e("./web3/property"),b=e("./web3/httpprovider"),v=e("./web3/ipcprovider"),w=e("bignumber.js");function x(e){this._requestManager=new n(e),this.currentProvider=e,this.eth=new o(this),this.db=new a(this),this.shh=new s(this),this.net=new c(this),this.personal=new u(this),this.bzz=new f(this),this.settings=new l,this.version={api:h.version},this.providers={HttpProvider:b,IpcProvider:v},this._extend=m(this),this._extend({properties:_()})}x.providers={HttpProvider:b,IpcProvider:v},x.prototype.setProvider=function(e){this._requestManager.setProvider(e),this.currentProvider=e},x.prototype.reset=function(e){this._requestManager.reset(e),this.settings=new l},x.prototype.BigNumber=w,x.prototype.toHex=d.toHex,x.prototype.toAscii=d.toAscii,x.prototype.toUtf8=d.toUtf8,x.prototype.fromAscii=d.fromAscii,x.prototype.fromUtf8=d.fromUtf8,x.prototype.toDecimal=d.toDecimal,x.prototype.fromDecimal=d.fromDecimal,x.prototype.toBigNumber=d.toBigNumber,x.prototype.toWei=d.toWei,x.prototype.fromWei=d.fromWei,x.prototype.isAddress=d.isAddress,x.prototype.isChecksumAddress=d.isChecksumAddress,x.prototype.toChecksumAddress=d.toChecksumAddress,x.prototype.isIBAN=d.isIBAN,x.prototype.sha3=function(e,t){return"0x"+p(e,t)},x.prototype.fromICAP=function(e){return new i(e).address()};var _=function(){return[new g({name:"version.node",getter:"web3_clientVersion"}),new g({name:"version.network",getter:"net_version",inputFormatter:d.toDecimal}),new g({name:"version.ethereum",getter:"eth_protocolVersion",inputFormatter:d.toDecimal}),new g({name:"version.whisper",getter:"shh_version",inputFormatter:d.toDecimal})]};x.prototype.isConnected=function(){return this.currentProvider&&this.currentProvider.isConnected()},x.prototype.createBatch=function(){return new y(this)},t.exports=x},{"./utils/sha3":169,"./utils/utils":170,"./version.json":171,"./web3/batch":174,"./web3/extend":178,"./web3/httpprovider":182,"./web3/iban":183,"./web3/ipcprovider":184,"./web3/methods/db":187,"./web3/methods/eth":188,"./web3/methods/net":189,"./web3/methods/personal":190,"./web3/methods/shh":191,"./web3/methods/swarm":192,"./web3/property":195,"./web3/requestmanager":196,"./web3/settings":197,"bignumber.js":149}],173:[function(e,t,r){var n=e("../utils/sha3"),i=e("./event"),o=e("./formatters"),a=e("../utils/utils"),s=e("./filter"),c=e("./methods/watches"),u=function(e,t,r){this._requestManager=e,this._json=t,this._address=r};u.prototype.encode=function(e){e=e||{};var t={};return["fromBlock","toBlock"].filter((function(t){return void 0!==e[t]})).forEach((function(r){t[r]=o.inputBlockNumberFormatter(e[r])})),t.address=this._address,t},u.prototype.decode=function(e){e.data=e.data||"",e.topics=e.topics||[];var t=e.topics[0].slice(2),r=this._json.filter((function(e){return t===n(a.transformToFullName(e))}))[0];return r?new i(this._requestManager,r,this._address).decode(e):(console.warn("cannot find event for log"),e)},u.prototype.execute=function(e,t){a.isFunction(arguments[arguments.length-1])&&(t=arguments[arguments.length-1],1===arguments.length&&(e=null));var r=this.encode(e),n=this.decode.bind(this);return new s(this._requestManager,r,c.eth(),n,t)},u.prototype.attachToContract=function(e){var t=this.execute.bind(this);e.allEvents=t},t.exports=u},{"../utils/sha3":169,"../utils/utils":170,"./event":177,"./filter":179,"./formatters":180,"./methods/watches":193}],174:[function(e,t,r){var n=e("./jsonrpc"),i=e("./errors"),o=function(e){this.requestManager=e._requestManager,this.requests=[]};o.prototype.add=function(e){this.requests.push(e)},o.prototype.execute=function(){var e=this.requests;this.requestManager.sendBatch(e,(function(t,r){r=r||[],e.map((function(e,t){return r[t]||{}})).forEach((function(t,r){if(e[r].callback){if(!n.isValidResponse(t))return e[r].callback(i.InvalidResponse(t));e[r].callback(null,e[r].format?e[r].format(t.result):t.result)}}))}))},t.exports=o},{"./errors":176,"./jsonrpc":185}],175:[function(e,t,r){var n=e("../utils/utils"),i=e("../solidity/coder"),o=e("./event"),a=e("./function"),s=e("./allevents"),c=function(e,t){return e.filter((function(e){return"constructor"===e.type&&e.inputs.length===t.length})).map((function(e){return e.inputs.map((function(e){return e.type}))})).map((function(e){return i.encodeParams(e,t)}))[0]||""},u=function(e){e.abi.filter((function(e){return"function"===e.type})).map((function(t){return new a(e._eth,t,e.address)})).forEach((function(t){t.attachToContract(e)}))},f=function(e){var t=e.abi.filter((function(e){return"event"===e.type}));new s(e._eth._requestManager,t,e.address).attachToContract(e),t.map((function(t){return new o(e._eth._requestManager,t,e.address)})).forEach((function(t){t.attachToContract(e)}))},l=function(e,t){var r=0,n=!1,i=e._eth.filter("latest",(function(o){if(!o&&!n)if(++r>50){if(i.stopWatching((function(){})),n=!0,!t)throw new Error("Contract transaction couldn't be found after 50 blocks");t(new Error("Contract transaction couldn't be found after 50 blocks"))}else e._eth.getTransactionReceipt(e.transactionHash,(function(r,o){o&&!n&&e._eth.getCode(o.contractAddress,(function(r,a){if(!n&&a)if(i.stopWatching((function(){})),n=!0,a.length>3)e.address=o.contractAddress,u(e),f(e),t&&t(null,e);else{if(!t)throw new Error("The contract code couldn't be stored, please check your gas amount.");t(new Error("The contract code couldn't be stored, please check your gas amount."))}}))}))}))},h=function(e,t){this.eth=e,this.abi=t,this.new=function(){var e,r=new d(this.eth,this.abi),i={},o=Array.prototype.slice.call(arguments);n.isFunction(o[o.length-1])&&(e=o.pop());var a=o[o.length-1];if(n.isObject(a)&&!n.isArray(a)&&(i=o.pop()),i.value>0){var s=t.filter((function(e){return"constructor"===e.type&&e.inputs.length===o.length}))[0]||{};if(!s.payable)throw new Error("Cannot send value to non-payable constructor")}var u=c(this.abi,o);if(i.data+=u,e)this.eth.sendTransaction(i,(function(t,n){t?e(t):(r.transactionHash=n,e(null,r),l(r,e))}));else{var f=this.eth.sendTransaction(i);r.transactionHash=f,l(r)}return r},this.new.getData=this.getData.bind(this)};h.prototype.at=function(e,t){var r=new d(this.eth,this.abi,e);return u(r),f(r),t&&t(null,r),r},h.prototype.getData=function(){var e={},t=Array.prototype.slice.call(arguments),r=t[t.length-1];n.isObject(r)&&!n.isArray(r)&&(e=t.pop());var i=c(this.abi,t);return e.data+=i,e.data};var d=function(e,t,r){this._eth=e,this.transactionHash=null,this.address=r,this.abi=t};t.exports=h},{"../solidity/coder":157,"../utils/utils":170,"./allevents":173,"./event":177,"./function":181}],176:[function(e,t,r){t.exports={InvalidNumberOfParams:function(){return new Error("Invalid number of input parameters")},InvalidConnection:function(e){return new Error("CONNECTION ERROR: Couldn't connect to node "+e+".")},InvalidProvider:function(){return new Error("Provider not set or invalid")},InvalidResponse:function(e){var t=e&&e.error&&e.error.message?e.error.message:"Invalid JSON RPC response: "+JSON.stringify(e);return new Error(t)},ConnectionTimeout:function(e){return new Error("CONNECTION TIMEOUT: timeout of "+e+" ms achived")}}},{}],177:[function(e,t,r){var n=e("../utils/utils"),i=e("../solidity/coder"),o=e("./formatters"),a=e("../utils/sha3"),s=e("./filter"),c=e("./methods/watches"),u=function(e,t,r){this._requestManager=e,this._params=t.inputs,this._name=n.transformToFullName(t),this._address=r,this._anonymous=t.anonymous};u.prototype.types=function(e){return this._params.filter((function(t){return t.indexed===e})).map((function(e){return e.type}))},u.prototype.displayName=function(){return n.extractDisplayName(this._name)},u.prototype.typeName=function(){return n.extractTypeName(this._name)},u.prototype.signature=function(){return a(this._name)},u.prototype.encode=function(e,t){e=e||{},t=t||{};var r={};["fromBlock","toBlock"].filter((function(e){return void 0!==t[e]})).forEach((function(e){r[e]=o.inputBlockNumberFormatter(t[e])})),r.topics=[],r.address=this._address,this._anonymous||r.topics.push("0x"+this.signature());var a=this._params.filter((function(e){return!0===e.indexed})).map((function(t){var r=e[t.name];return null==r?null:n.isArray(r)?r.map((function(e){return"0x"+i.encodeParam(t.type,e)})):"0x"+i.encodeParam(t.type,r)}));return r.topics=r.topics.concat(a),r},u.prototype.decode=function(e){e.data=e.data||"",e.topics=e.topics||[];var t=(this._anonymous?e.topics:e.topics.slice(1)).map((function(e){return e.slice(2)})).join(""),r=i.decodeParams(this.types(!0),t),n=e.data.slice(2),a=i.decodeParams(this.types(!1),n),s=o.outputLogFormatter(e);return s.event=this.displayName(),s.address=e.address,s.args=this._params.reduce((function(e,t){return e[t.name]=t.indexed?r.shift():a.shift(),e}),{}),delete s.data,delete s.topics,s},u.prototype.execute=function(e,t,r){n.isFunction(arguments[arguments.length-1])&&(r=arguments[arguments.length-1],2===arguments.length&&(t=null),1===arguments.length&&(t=null,e={}));var i=this.encode(e,t),o=this.decode.bind(this);return new s(this._requestManager,i,c.eth(),o,r)},u.prototype.attachToContract=function(e){var t=this.execute.bind(this),r=this.displayName();e[r]||(e[r]=t),e[r][this.typeName()]=this.execute.bind(this,e)},t.exports=u},{"../solidity/coder":157,"../utils/sha3":169,"../utils/utils":170,"./filter":179,"./formatters":180,"./methods/watches":193}],178:[function(e,t,r){var n=e("./formatters"),i=e("./../utils/utils"),o=e("./method"),a=e("./property");t.exports=function(e){var t=function(t){var r;t.property?(e[t.property]||(e[t.property]={}),r=e[t.property]):r=e,t.methods&&t.methods.forEach((function(t){t.attachToObject(r),t.setRequestManager(e._requestManager)})),t.properties&&t.properties.forEach((function(t){t.attachToObject(r),t.setRequestManager(e._requestManager)}))};return t.formatters=n,t.utils=i,t.Method=o,t.Property=a,t}},{"./../utils/utils":170,"./formatters":180,"./method":186,"./property":195}],179:[function(e,t,r){var n=e("./formatters"),i=e("../utils/utils"),o=function(e){return null==e?null:0===(e=String(e)).indexOf("0x")?e:i.fromUtf8(e)},a=function(e,t){i.isString(e.options)||e.get((function(e,r){e&&t(e),i.isArray(r)&&r.forEach((function(e){t(null,e)}))}))},s=function(e){e.requestManager.startPolling({method:e.implementation.poll.call,params:[e.filterId]},e.filterId,(function(t,r){if(t)return e.callbacks.forEach((function(e){e(t)}));i.isArray(r)&&r.forEach((function(t){t=e.formatter?e.formatter(t):t,e.callbacks.forEach((function(e){e(null,t)}))}))}),e.stopWatching.bind(e))},c=function(e,t,r,c,u,f){var l=this,h={};return r.forEach((function(t){t.setRequestManager(e),t.attachToObject(h)})),this.requestManager=e,this.options=function(e){return i.isString(e)?e:((e=e||{}).topics=e.topics||[],e.topics=e.topics.map((function(e){return i.isArray(e)?e.map(o):o(e)})),{topics:e.topics,from:e.from,to:e.to,address:e.address,fromBlock:n.inputBlockNumberFormatter(e.fromBlock),toBlock:n.inputBlockNumberFormatter(e.toBlock)})}(t),this.implementation=h,this.filterId=null,this.callbacks=[],this.getLogsCallbacks=[],this.pollFilters=[],this.formatter=c,this.implementation.newFilter(this.options,(function(e,t){if(e)l.callbacks.forEach((function(t){t(e)})),f(e);else if(l.filterId=t,l.getLogsCallbacks.forEach((function(e){l.get(e)})),l.getLogsCallbacks=[],l.callbacks.forEach((function(e){a(l,e)})),l.callbacks.length>0&&s(l),"function"==typeof u)return l.watch(u)})),this};c.prototype.watch=function(e){return this.callbacks.push(e),this.filterId&&(a(this,e),s(this)),this},c.prototype.stopWatching=function(e){if(this.requestManager.stopPolling(this.filterId),this.callbacks=[],!e)return this.implementation.uninstallFilter(this.filterId);this.implementation.uninstallFilter(this.filterId,e)},c.prototype.get=function(e){var t=this;if(!i.isFunction(e)){if(null===this.filterId)throw new Error("Filter ID Error: filter().get() can't be chained synchronous, please provide a callback for the get() method.");return this.implementation.getLogs(this.filterId).map((function(e){return t.formatter?t.formatter(e):e}))}return null===this.filterId?this.getLogsCallbacks.push(e):this.implementation.getLogs(this.filterId,(function(r,n){r?e(r):e(null,n.map((function(e){return t.formatter?t.formatter(e):e})))})),this},t.exports=c},{"../utils/utils":170,"./formatters":180}],180:[function(e,t,r){var n=e("../utils/utils"),i=e("../utils/config"),o=e("./iban"),a=function(e){if(void 0!==e)return function(e){return"latest"===e||"pending"===e||"earliest"===e}(e)?e:n.toHex(e)},s=function(e){return null!==e.blockNumber&&(e.blockNumber=n.toDecimal(e.blockNumber)),null!==e.transactionIndex&&(e.transactionIndex=n.toDecimal(e.transactionIndex)),e.nonce=n.toDecimal(e.nonce),e.gas=n.toDecimal(e.gas),e.gasPrice=n.toBigNumber(e.gasPrice),e.value=n.toBigNumber(e.value),e},c=function(e){return null!==e.blockNumber&&(e.blockNumber=n.toDecimal(e.blockNumber)),null!==e.transactionIndex&&(e.transactionIndex=n.toDecimal(e.transactionIndex)),null!==e.logIndex&&(e.logIndex=n.toDecimal(e.logIndex)),e},u=function(e){var t=new o(e);if(t.isValid()&&t.isDirect())return"0x"+t.address();if(n.isStrictAddress(e))return e;if(n.isAddress(e))return"0x"+e;throw new Error("invalid address")};t.exports={inputDefaultBlockNumberFormatter:function(e){return void 0===e?i.defaultBlock:a(e)},inputBlockNumberFormatter:a,inputCallFormatter:function(e){return e.from=e.from||i.defaultAccount,e.from&&(e.from=u(e.from)),e.to&&(e.to=u(e.to)),["gasPrice","gas","value","nonce"].filter((function(t){return void 0!==e[t]})).forEach((function(t){e[t]=n.fromDecimal(e[t])})),e},inputTransactionFormatter:function(e){return e.from=e.from||i.defaultAccount,e.from=u(e.from),e.to&&(e.to=u(e.to)),["gasPrice","gas","value","nonce"].filter((function(t){return void 0!==e[t]})).forEach((function(t){e[t]=n.fromDecimal(e[t])})),e},inputAddressFormatter:u,inputPostFormatter:function(e){return e.ttl=n.fromDecimal(e.ttl),e.workToProve=n.fromDecimal(e.workToProve),e.priority=n.fromDecimal(e.priority),n.isArray(e.topics)||(e.topics=e.topics?[e.topics]:[]),e.topics=e.topics.map((function(e){return 0===e.indexOf("0x")?e:n.fromUtf8(e)})),e},outputBigNumberFormatter:function(e){return n.toBigNumber(e)},outputTransactionFormatter:s,outputTransactionReceiptFormatter:function(e){return null!==e.blockNumber&&(e.blockNumber=n.toDecimal(e.blockNumber)),null!==e.transactionIndex&&(e.transactionIndex=n.toDecimal(e.transactionIndex)),e.cumulativeGasUsed=n.toDecimal(e.cumulativeGasUsed),e.gasUsed=n.toDecimal(e.gasUsed),n.isArray(e.logs)&&(e.logs=e.logs.map((function(e){return c(e)}))),e},outputBlockFormatter:function(e){return e.gasLimit=n.toDecimal(e.gasLimit),e.gasUsed=n.toDecimal(e.gasUsed),e.size=n.toDecimal(e.size),e.timestamp=n.toDecimal(e.timestamp),null!==e.number&&(e.number=n.toDecimal(e.number)),e.difficulty=n.toBigNumber(e.difficulty),e.totalDifficulty=n.toBigNumber(e.totalDifficulty),n.isArray(e.transactions)&&e.transactions.forEach((function(e){if(!n.isString(e))return s(e)})),e},outputLogFormatter:c,outputPostFormatter:function(e){return e.expiry=n.toDecimal(e.expiry),e.sent=n.toDecimal(e.sent),e.ttl=n.toDecimal(e.ttl),e.workProved=n.toDecimal(e.workProved),e.topics||(e.topics=[]),e.topics=e.topics.map((function(e){return n.toAscii(e)})),e},outputSyncingFormatter:function(e){return e.startingBlock=n.toDecimal(e.startingBlock),e.currentBlock=n.toDecimal(e.currentBlock),e.highestBlock=n.toDecimal(e.highestBlock),e.knownStates&&(e.knownStates=n.toDecimal(e.knownStates),e.pulledStates=n.toDecimal(e.pulledStates)),e}}},{"../utils/config":168,"../utils/utils":170,"./iban":183}],181:[function(e,t,r){var n=e("../solidity/coder"),i=e("../utils/utils"),o=e("./formatters"),a=e("../utils/sha3"),s=function(e,t,r){this._eth=e,this._inputTypes=t.inputs.map((function(e){return e.type})),this._outputTypes=t.outputs.map((function(e){return e.type})),this._constant=t.constant,this._payable=t.payable,this._name=i.transformToFullName(t),this._address=r};s.prototype.extractCallback=function(e){if(i.isFunction(e[e.length-1]))return e.pop()},s.prototype.extractDefaultBlock=function(e){if(e.length>this._inputTypes.length&&!i.isObject(e[e.length-1]))return o.inputDefaultBlockNumberFormatter(e.pop())},s.prototype.toPayload=function(e){var t={};return e.length>this._inputTypes.length&&i.isObject(e[e.length-1])&&(t=e[e.length-1]),t.to=this._address,t.data="0x"+this.signature()+n.encodeParams(this._inputTypes,e),t},s.prototype.signature=function(){return a(this._name).slice(0,8)},s.prototype.unpackOutput=function(e){if(e){e=e.length>=2?e.slice(2):e;var t=n.decodeParams(this._outputTypes,e);return 1===t.length?t[0]:t}},s.prototype.call=function(){var e=Array.prototype.slice.call(arguments).filter((function(e){return void 0!==e})),t=this.extractCallback(e),r=this.extractDefaultBlock(e),n=this.toPayload(e);if(!t){var i=this._eth.call(n,r);return this.unpackOutput(i)}var o=this;this._eth.call(n,r,(function(e,r){if(e)return t(e,null);var n=null;try{n=o.unpackOutput(r)}catch(t){e=t}t(e,n)}))},s.prototype.sendTransaction=function(){var e=Array.prototype.slice.call(arguments).filter((function(e){return void 0!==e})),t=this.extractCallback(e),r=this.toPayload(e);if(r.value>0&&!this._payable)throw new Error("Cannot send value to non-payable function");if(!t)return this._eth.sendTransaction(r);this._eth.sendTransaction(r,t)},s.prototype.estimateGas=function(){var e=Array.prototype.slice.call(arguments),t=this.extractCallback(e),r=this.toPayload(e);if(!t)return this._eth.estimateGas(r);this._eth.estimateGas(r,t)},s.prototype.getData=function(){var e=Array.prototype.slice.call(arguments),t=this.toPayload(e);return t.data},s.prototype.displayName=function(){return i.extractDisplayName(this._name)},s.prototype.typeName=function(){return i.extractTypeName(this._name)},s.prototype.request=function(){var e=Array.prototype.slice.call(arguments),t=this.extractCallback(e),r=this.toPayload(e),n=this.unpackOutput.bind(this);return{method:this._constant?"eth_call":"eth_sendTransaction",callback:t,params:[r],format:n}},s.prototype.execute=function(){var e=!this._constant;return e?this.sendTransaction.apply(this,Array.prototype.slice.call(arguments)):this.call.apply(this,Array.prototype.slice.call(arguments))},s.prototype.attachToContract=function(e){var t=this.execute.bind(this);t.request=this.request.bind(this),t.call=this.call.bind(this),t.sendTransaction=this.sendTransaction.bind(this),t.estimateGas=this.estimateGas.bind(this),t.getData=this.getData.bind(this);var r=this.displayName();e[r]||(e[r]=t),e[r][this.typeName()]=t},t.exports=s},{"../solidity/coder":157,"../utils/sha3":169,"../utils/utils":170,"./formatters":180}],182:[function(e,t,r){var n=e("./errors");"undefined"!=typeof window&&window.XMLHttpRequest?XMLHttpRequest=window.XMLHttpRequest:XMLHttpRequest=e("xmlhttprequest").XMLHttpRequest;var i=e("xhr2"),o=function(e,t){this.host=e||"http://localhost:8545",this.timeout=t||0};o.prototype.prepareRequest=function(e){var t;return e?(t=new i).timeout=this.timeout:t=new XMLHttpRequest,t.open("POST",this.host,e),t.setRequestHeader("Content-Type","application/json"),t},o.prototype.send=function(e){var t=this.prepareRequest(!1);try{t.send(JSON.stringify(e))}catch(e){throw n.InvalidConnection(this.host)}var r=t.responseText;try{r=JSON.parse(r)}catch(e){throw n.InvalidResponse(t.responseText)}return r},o.prototype.sendAsync=function(e,t){var r=this.prepareRequest(!0);r.onreadystatechange=function(){if(4===r.readyState&&1!==r.timeout){var e=r.responseText,i=null;try{e=JSON.parse(e)}catch(e){i=n.InvalidResponse(r.responseText)}t(i,e)}},r.ontimeout=function(){t(n.ConnectionTimeout(this.timeout))};try{r.send(JSON.stringify(e))}catch(e){t(n.InvalidConnection(this.host))}},o.prototype.isConnected=function(){try{return this.send({id:9999999999,jsonrpc:"2.0",method:"net_listening",params:[]}),!0}catch(e){return!1}},t.exports=o},{"./errors":176,xhr2:1429,xmlhttprequest:167}],183:[function(e,t,r){var n=e("bignumber.js"),i=function(e,t){for(var r=e;r.length<2*t;)r="0"+r;return r},o=function(e){var t="A".charCodeAt(0),r="Z".charCodeAt(0);return(e=(e=e.toUpperCase()).substr(4)+e.substr(0,4)).split("").map((function(e){var n=e.charCodeAt(0);return n>=t&&n<=r?n-t+10:e})).join("")},a=function(e){for(var t,r=e;r.length>2;)t=r.slice(0,9),r=parseInt(t,10)%97+r.slice(t.length);return parseInt(r,10)%97},s=function(e){this._iban=e};s.fromAddress=function(e){var t=new n(e,16).toString(36),r=i(t,15);return s.fromBban(r.toUpperCase())},s.fromBban=function(e){var t=("0"+(98-a(o("XE00"+e)))).slice(-2);return new s("XE"+t+e)},s.createIndirect=function(e){return s.fromBban("ETH"+e.institution+e.identifier)},s.isValid=function(e){return new s(e).isValid()},s.prototype.isValid=function(){return/^XE[0-9]{2}(ETH[0-9A-Z]{13}|[0-9A-Z]{30,31})$/.test(this._iban)&&1===a(o(this._iban))},s.prototype.isDirect=function(){return 34===this._iban.length||35===this._iban.length},s.prototype.isIndirect=function(){return 20===this._iban.length},s.prototype.checksum=function(){return this._iban.substr(2,2)},s.prototype.institution=function(){return this.isIndirect()?this._iban.substr(7,4):""},s.prototype.client=function(){return this.isIndirect()?this._iban.substr(11):""},s.prototype.address=function(){if(this.isDirect()){var e=this._iban.substr(4),t=new n(e,36);return i(t.toString(16),20)}return""},s.prototype.toString=function(){return this._iban},t.exports=s},{"bignumber.js":149}],184:[function(e,t,r){"use strict";var n=e("../utils/utils"),i=e("./errors"),o=function(e,t){var r=this;this.responseCallbacks={},this.path=e,this.connection=t.connect({path:this.path}),this.connection.on("error",(function(e){console.error("IPC Connection Error",e),r._timeout()})),this.connection.on("end",(function(){r._timeout()})),this.connection.on("data",(function(e){r._parseResponse(e.toString()).forEach((function(e){var t=null;n.isArray(e)?e.forEach((function(e){r.responseCallbacks[e.id]&&(t=e.id)})):t=e.id,r.responseCallbacks[t]&&(r.responseCallbacks[t](null,e),delete r.responseCallbacks[t])}))}))};o.prototype._parseResponse=function(e){var t=this,r=[];return e.replace(/\}[\n\r]?\{/g,"}|--|{").replace(/\}\][\n\r]?\[\{/g,"}]|--|[{").replace(/\}[\n\r]?\[\{/g,"}|--|[{").replace(/\}\][\n\r]?\{/g,"}]|--|{").split("|--|").forEach((function(e){t.lastChunk&&(e=t.lastChunk+e);var n=null;try{n=JSON.parse(e)}catch(r){return t.lastChunk=e,clearTimeout(t.lastChunkTimeout),void(t.lastChunkTimeout=setTimeout((function(){throw t._timeout(),i.InvalidResponse(e)}),15e3))}clearTimeout(t.lastChunkTimeout),t.lastChunk=null,n&&r.push(n)})),r},o.prototype._addResponseCallback=function(e,t){var r=e.id||e[0].id,n=e.method||e[0].method;this.responseCallbacks[r]=t,this.responseCallbacks[r].method=n},o.prototype._timeout=function(){for(var e in this.responseCallbacks)this.responseCallbacks.hasOwnProperty(e)&&(this.responseCallbacks[e](i.InvalidConnection("on IPC")),delete this.responseCallbacks[e])},o.prototype.isConnected=function(){return this.connection.writable||this.connection.connect({path:this.path}),!!this.connection.writable},o.prototype.send=function(e){if(this.connection.writeSync){var t;this.connection.writable||this.connection.connect({path:this.path});var r=this.connection.writeSync(JSON.stringify(e));try{t=JSON.parse(r)}catch(e){throw i.InvalidResponse(r)}return t}throw new Error('You tried to send "'+e.method+'" synchronously. Synchronous requests are not supported by the IPC provider.')},o.prototype.sendAsync=function(e,t){this.connection.writable||this.connection.connect({path:this.path}),this.connection.write(JSON.stringify(e)),this._addResponseCallback(e,t)},t.exports=o},{"../utils/utils":170,"./errors":176}],185:[function(e,t,r){var n={messageId:0,toPayload:function(e,t){return e||console.error("jsonrpc method should be specified!"),n.messageId++,{jsonrpc:"2.0",id:n.messageId,method:e,params:t||[]}},isValidResponse:function(e){return Array.isArray(e)?e.every(t):t(e);function t(e){return!!e&&!e.error&&"2.0"===e.jsonrpc&&"number"==typeof e.id&&void 0!==e.result}},toBatchPayload:function(e){return e.map((function(e){return n.toPayload(e.method,e.params)}))}};t.exports=n},{}],186:[function(e,t,r){var n=e("../utils/utils"),i=e("./errors"),o=function(e){this.name=e.name,this.call=e.call,this.params=e.params||0,this.inputFormatter=e.inputFormatter,this.outputFormatter=e.outputFormatter,this.requestManager=null};o.prototype.setRequestManager=function(e){this.requestManager=e},o.prototype.getCall=function(e){return n.isFunction(this.call)?this.call(e):this.call},o.prototype.extractCallback=function(e){if(n.isFunction(e[e.length-1]))return e.pop()},o.prototype.validateArgs=function(e){if(e.length!==this.params)throw i.InvalidNumberOfParams()},o.prototype.formatInput=function(e){return this.inputFormatter?this.inputFormatter.map((function(t,r){return t?t(e[r]):e[r]})):e},o.prototype.formatOutput=function(e){return this.outputFormatter&&e?this.outputFormatter(e):e},o.prototype.toPayload=function(e){var t=this.getCall(e),r=this.extractCallback(e),n=this.formatInput(e);return this.validateArgs(n),{method:t,params:n,callback:r}},o.prototype.attachToObject=function(e){var t=this.buildCall();t.call=this.call;var r=this.name.split(".");r.length>1?(e[r[0]]=e[r[0]]||{},e[r[0]][r[1]]=t):e[r[0]]=t},o.prototype.buildCall=function(){var e=this,t=function(){var t=e.toPayload(Array.prototype.slice.call(arguments));return t.callback?e.requestManager.sendAsync(t,(function(r,n){t.callback(r,e.formatOutput(n))})):e.formatOutput(e.requestManager.send(t))};return t.request=this.request.bind(this),t},o.prototype.request=function(){var e=this.toPayload(Array.prototype.slice.call(arguments));return e.format=this.formatOutput.bind(this),e},t.exports=o},{"../utils/utils":170,"./errors":176}],187:[function(e,t,r){var n=e("../method"),i=function(){return[new n({name:"putString",call:"db_putString",params:3}),new n({name:"getString",call:"db_getString",params:2}),new n({name:"putHex",call:"db_putHex",params:3}),new n({name:"getHex",call:"db_getHex",params:2})]};t.exports=function(e){this._requestManager=e._requestManager;var t=this;i().forEach((function(r){r.attachToObject(t),r.setRequestManager(e._requestManager)}))}},{"../method":186}],188:[function(e,t,r){"use strict";var n=e("../formatters"),i=e("../../utils/utils"),o=e("../method"),a=e("../property"),s=e("../../utils/config"),c=e("../contract"),u=e("./watches"),f=e("../filter"),l=e("../syncing"),h=e("../namereg"),d=e("../iban"),p=e("../transfer"),m=function(e){return i.isString(e[0])&&0===e[0].indexOf("0x")?"eth_getBlockByHash":"eth_getBlockByNumber"},y=function(e){return i.isString(e[0])&&0===e[0].indexOf("0x")?"eth_getTransactionByBlockHashAndIndex":"eth_getTransactionByBlockNumberAndIndex"},g=function(e){return i.isString(e[0])&&0===e[0].indexOf("0x")?"eth_getUncleByBlockHashAndIndex":"eth_getUncleByBlockNumberAndIndex"},b=function(e){return i.isString(e[0])&&0===e[0].indexOf("0x")?"eth_getBlockTransactionCountByHash":"eth_getBlockTransactionCountByNumber"},v=function(e){return i.isString(e[0])&&0===e[0].indexOf("0x")?"eth_getUncleCountByBlockHash":"eth_getUncleCountByBlockNumber"};function w(e){this._requestManager=e._requestManager;var t=this;x().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)})),_().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)})),this.iban=d,this.sendIBANTransaction=p.bind(null,this)}Object.defineProperty(w.prototype,"defaultBlock",{get:function(){return s.defaultBlock},set:function(e){return s.defaultBlock=e,e}}),Object.defineProperty(w.prototype,"defaultAccount",{get:function(){return s.defaultAccount},set:function(e){return s.defaultAccount=e,e}});var x=function(){var e=new o({name:"getBalance",call:"eth_getBalance",params:2,inputFormatter:[n.inputAddressFormatter,n.inputDefaultBlockNumberFormatter],outputFormatter:n.outputBigNumberFormatter}),t=new o({name:"getStorageAt",call:"eth_getStorageAt",params:3,inputFormatter:[null,i.toHex,n.inputDefaultBlockNumberFormatter]}),r=new o({name:"getCode",call:"eth_getCode",params:2,inputFormatter:[n.inputAddressFormatter,n.inputDefaultBlockNumberFormatter]}),a=new o({name:"getBlock",call:m,params:2,inputFormatter:[n.inputBlockNumberFormatter,function(e){return!!e}],outputFormatter:n.outputBlockFormatter}),s=new o({name:"getUncle",call:g,params:2,inputFormatter:[n.inputBlockNumberFormatter,i.toHex],outputFormatter:n.outputBlockFormatter}),c=new o({name:"getCompilers",call:"eth_getCompilers",params:0}),u=new o({name:"getBlockTransactionCount",call:b,params:1,inputFormatter:[n.inputBlockNumberFormatter],outputFormatter:i.toDecimal}),f=new o({name:"getBlockUncleCount",call:v,params:1,inputFormatter:[n.inputBlockNumberFormatter],outputFormatter:i.toDecimal}),l=new o({name:"getTransaction",call:"eth_getTransactionByHash",params:1,outputFormatter:n.outputTransactionFormatter}),h=new o({name:"getTransactionFromBlock",call:y,params:2,inputFormatter:[n.inputBlockNumberFormatter,i.toHex],outputFormatter:n.outputTransactionFormatter}),d=new o({name:"getTransactionReceipt",call:"eth_getTransactionReceipt",params:1,outputFormatter:n.outputTransactionReceiptFormatter}),p=new o({name:"getTransactionCount",call:"eth_getTransactionCount",params:2,inputFormatter:[null,n.inputDefaultBlockNumberFormatter],outputFormatter:i.toDecimal}),w=new o({name:"sendRawTransaction",call:"eth_sendRawTransaction",params:1,inputFormatter:[null]}),x=new o({name:"sendTransaction",call:"eth_sendTransaction",params:1,inputFormatter:[n.inputTransactionFormatter]}),_=new o({name:"signTransaction",call:"eth_signTransaction",params:1,inputFormatter:[n.inputTransactionFormatter]}),k=new o({name:"sign",call:"eth_sign",params:2,inputFormatter:[n.inputAddressFormatter,null]});return[e,t,r,a,s,c,u,f,l,h,d,p,new o({name:"call",call:"eth_call",params:2,inputFormatter:[n.inputCallFormatter,n.inputDefaultBlockNumberFormatter]}),new o({name:"estimateGas",call:"eth_estimateGas",params:1,inputFormatter:[n.inputCallFormatter],outputFormatter:i.toDecimal}),w,_,x,k,new o({name:"compile.solidity",call:"eth_compileSolidity",params:1}),new o({name:"compile.lll",call:"eth_compileLLL",params:1}),new o({name:"compile.serpent",call:"eth_compileSerpent",params:1}),new o({name:"submitWork",call:"eth_submitWork",params:3}),new o({name:"getWork",call:"eth_getWork",params:0})]},_=function(){return[new a({name:"coinbase",getter:"eth_coinbase"}),new a({name:"mining",getter:"eth_mining"}),new a({name:"hashrate",getter:"eth_hashrate",outputFormatter:i.toDecimal}),new a({name:"syncing",getter:"eth_syncing",outputFormatter:n.outputSyncingFormatter}),new a({name:"gasPrice",getter:"eth_gasPrice",outputFormatter:n.outputBigNumberFormatter}),new a({name:"accounts",getter:"eth_accounts"}),new a({name:"blockNumber",getter:"eth_blockNumber",outputFormatter:i.toDecimal}),new a({name:"protocolVersion",getter:"eth_protocolVersion"})]};w.prototype.contract=function(e){return new c(this,e)},w.prototype.filter=function(e,t){return new f(this._requestManager,e,u.eth(),n.outputLogFormatter,t)},w.prototype.namereg=function(){return this.contract(h.global.abi).at(h.global.address)},w.prototype.icapNamereg=function(){return this.contract(h.icap.abi).at(h.icap.address)},w.prototype.isSyncing=function(e){return new l(this._requestManager,e)},t.exports=w},{"../../utils/config":168,"../../utils/utils":170,"../contract":175,"../filter":179,"../formatters":180,"../iban":183,"../method":186,"../namereg":194,"../property":195,"../syncing":198,"../transfer":199,"./watches":193}],189:[function(e,t,r){var n=e("../../utils/utils"),i=e("../property"),o=function(){return[new i({name:"listening",getter:"net_listening"}),new i({name:"peerCount",getter:"net_peerCount",outputFormatter:n.toDecimal})]};t.exports=function(e){this._requestManager=e._requestManager;var t=this;o().forEach((function(r){r.attachToObject(t),r.setRequestManager(e._requestManager)}))}},{"../../utils/utils":170,"../property":195}],190:[function(e,t,r){"use strict";var n=e("../method"),i=e("../property"),o=e("../formatters");var a=function(){return[new n({name:"newAccount",call:"personal_newAccount",params:1,inputFormatter:[null]}),new n({name:"unlockAccount",call:"personal_unlockAccount",params:3,inputFormatter:[o.inputAddressFormatter,null,null]}),new n({name:"sendTransaction",call:"personal_sendTransaction",params:2,inputFormatter:[o.inputTransactionFormatter,null]}),new n({name:"lockAccount",call:"personal_lockAccount",params:1,inputFormatter:[o.inputAddressFormatter]})]},s=function(){return[new i({name:"listAccounts",getter:"personal_listAccounts"})]};t.exports=function(e){this._requestManager=e._requestManager;var t=this;a().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)})),s().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)}))}},{"../formatters":180,"../method":186,"../property":195}],191:[function(e,t,r){var n=e("../method"),i=e("../formatters"),o=e("../filter"),a=e("./watches"),s=function(e){this._requestManager=e._requestManager;var t=this;c().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)}))};s.prototype.filter=function(e,t){return new o(this._requestManager,e,a.shh(),i.outputPostFormatter,t)};var c=function(){return[new n({name:"post",call:"shh_post",params:1,inputFormatter:[i.inputPostFormatter]}),new n({name:"newIdentity",call:"shh_newIdentity",params:0}),new n({name:"hasIdentity",call:"shh_hasIdentity",params:1}),new n({name:"newGroup",call:"shh_newGroup",params:0}),new n({name:"addToGroup",call:"shh_addToGroup",params:0})]};t.exports=s},{"../filter":179,"../formatters":180,"../method":186,"./watches":193}],192:[function(e,t,r){"use strict";var n=e("../method"),i=e("../property");var o=function(){return[new n({name:"blockNetworkRead",call:"bzz_blockNetworkRead",params:1,inputFormatter:[null]}),new n({name:"syncEnabled",call:"bzz_syncEnabled",params:1,inputFormatter:[null]}),new n({name:"swapEnabled",call:"bzz_swapEnabled",params:1,inputFormatter:[null]}),new n({name:"download",call:"bzz_download",params:2,inputFormatter:[null,null]}),new n({name:"upload",call:"bzz_upload",params:2,inputFormatter:[null,null]}),new n({name:"retrieve",call:"bzz_retrieve",params:1,inputFormatter:[null]}),new n({name:"store",call:"bzz_store",params:2,inputFormatter:[null,null]}),new n({name:"get",call:"bzz_get",params:1,inputFormatter:[null]}),new n({name:"put",call:"bzz_put",params:2,inputFormatter:[null,null]}),new n({name:"modify",call:"bzz_modify",params:4,inputFormatter:[null,null,null,null]})]},a=function(){return[new i({name:"hive",getter:"bzz_hive"}),new i({name:"info",getter:"bzz_info"})]};t.exports=function(e){this._requestManager=e._requestManager;var t=this;o().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)})),a().forEach((function(e){e.attachToObject(t),e.setRequestManager(t._requestManager)}))}},{"../method":186,"../property":195}],193:[function(e,t,r){var n=e("../method");t.exports={eth:function(){return[new n({name:"newFilter",call:function(e){switch(e[0]){case"latest":return e.shift(),this.params=0,"eth_newBlockFilter";case"pending":return e.shift(),this.params=0,"eth_newPendingTransactionFilter";default:return"eth_newFilter"}},params:1}),new n({name:"uninstallFilter",call:"eth_uninstallFilter",params:1}),new n({name:"getLogs",call:"eth_getFilterLogs",params:1}),new n({name:"poll",call:"eth_getFilterChanges",params:1})]},shh:function(){return[new n({name:"newFilter",call:"shh_newFilter",params:1}),new n({name:"uninstallFilter",call:"shh_uninstallFilter",params:1}),new n({name:"getLogs",call:"shh_getMessages",params:1}),new n({name:"poll",call:"shh_getFilterChanges",params:1})]}}},{"../method":186}],194:[function(e,t,r){var n=e("../contracts/GlobalRegistrar.json"),i=e("../contracts/ICAPRegistrar.json");t.exports={global:{abi:n,address:"0xc6d9d2cd449a754c494264e1809c50e34d64562b"},icap:{abi:i,address:"0xa1a111bc074c9cfa781f0c38e63bd51c91b8af00"}}},{"../contracts/GlobalRegistrar.json":151,"../contracts/ICAPRegistrar.json":152}],195:[function(e,t,r){var n=e("../utils/utils"),i=function(e){this.name=e.name,this.getter=e.getter,this.setter=e.setter,this.outputFormatter=e.outputFormatter,this.inputFormatter=e.inputFormatter,this.requestManager=null};i.prototype.setRequestManager=function(e){this.requestManager=e},i.prototype.formatInput=function(e){return this.inputFormatter?this.inputFormatter(e):e},i.prototype.formatOutput=function(e){return this.outputFormatter&&null!=e?this.outputFormatter(e):e},i.prototype.extractCallback=function(e){if(n.isFunction(e[e.length-1]))return e.pop()},i.prototype.attachToObject=function(e){var t={get:this.buildGet(),enumerable:!0},r=this.name.split("."),n=r[0];r.length>1&&(e[r[0]]=e[r[0]]||{},e=e[r[0]],n=r[1]),Object.defineProperty(e,n,t),e[o(n)]=this.buildAsyncGet()};var o=function(e){return"get"+e.charAt(0).toUpperCase()+e.slice(1)};i.prototype.buildGet=function(){var e=this;return function(){return e.formatOutput(e.requestManager.send({method:e.getter}))}},i.prototype.buildAsyncGet=function(){var e=this,t=function(t){e.requestManager.sendAsync({method:e.getter},(function(r,n){t(r,e.formatOutput(n))}))};return t.request=this.request.bind(this),t},i.prototype.request=function(){var e={method:this.getter,params:[],callback:this.extractCallback(Array.prototype.slice.call(arguments))};return e.format=this.formatOutput.bind(this),e},t.exports=i},{"../utils/utils":170}],196:[function(e,t,r){var n=e("./jsonrpc"),i=e("../utils/utils"),o=e("../utils/config"),a=e("./errors"),s=function(e){this.provider=e,this.polls={},this.timeout=null};s.prototype.send=function(e){if(!this.provider)return console.error(a.InvalidProvider()),null;var t=n.toPayload(e.method,e.params),r=this.provider.send(t);if(!n.isValidResponse(r))throw a.InvalidResponse(r);return r.result},s.prototype.sendAsync=function(e,t){if(!this.provider)return t(a.InvalidProvider());var r=n.toPayload(e.method,e.params);this.provider.sendAsync(r,(function(e,r){return e?t(e):n.isValidResponse(r)?void t(null,r.result):t(a.InvalidResponse(r))}))},s.prototype.sendBatch=function(e,t){if(!this.provider)return t(a.InvalidProvider());var r=n.toBatchPayload(e);this.provider.sendAsync(r,(function(e,r){return e?t(e):i.isArray(r)?void t(e,r):t(a.InvalidResponse(r))}))},s.prototype.setProvider=function(e){this.provider=e},s.prototype.startPolling=function(e,t,r,n){this.polls[t]={data:e,id:t,callback:r,uninstall:n},this.timeout||this.poll()},s.prototype.stopPolling=function(e){delete this.polls[e],0===Object.keys(this.polls).length&&this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},s.prototype.reset=function(e){for(var t in this.polls)e&&-1!==t.indexOf("syncPoll_")||(this.polls[t].uninstall(),delete this.polls[t]);0===Object.keys(this.polls).length&&this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},s.prototype.poll=function(){if(this.timeout=setTimeout(this.poll.bind(this),o.ETH_POLLING_TIMEOUT),0!==Object.keys(this.polls).length)if(this.provider){var e=[],t=[];for(var r in this.polls)e.push(this.polls[r].data),t.push(r);if(0!==e.length){var s=n.toBatchPayload(e),c={};s.forEach((function(e,r){c[e.id]=t[r]}));var u=this;this.provider.sendAsync(s,(function(e,t){if(!e){if(!i.isArray(t))throw a.InvalidResponse(t);t.map((function(e){var t=c[e.id];return!!u.polls[t]&&(e.callback=u.polls[t].callback,e)})).filter((function(e){return!!e})).filter((function(e){var t=n.isValidResponse(e);return t||e.callback(a.InvalidResponse(e)),t})).forEach((function(e){e.callback(null,e.result)}))}}))}}else console.error(a.InvalidProvider())},t.exports=s},{"../utils/config":168,"../utils/utils":170,"./errors":176,"./jsonrpc":185}],197:[function(e,t,r){t.exports=function(){this.defaultBlock="latest",this.defaultAccount=void 0}},{}],198:[function(e,t,r){var n=e("./formatters"),i=e("../utils/utils"),o=1,a=function(e,t){return this.requestManager=e,this.pollId="syncPoll_"+o++,this.callbacks=[],this.addCallback(t),this.lastSyncState=!1,function(e){e.requestManager.startPolling({method:"eth_syncing",params:[]},e.pollId,(function(t,r){if(t)return e.callbacks.forEach((function(e){e(t)}));i.isObject(r)&&r.startingBlock&&(r=n.outputSyncingFormatter(r)),e.callbacks.forEach((function(t){e.lastSyncState!==r&&(!e.lastSyncState&&i.isObject(r)&&t(null,!0),setTimeout((function(){t(null,r)}),0),e.lastSyncState=r)}))}),e.stopWatching.bind(e))}(this),this};a.prototype.addCallback=function(e){return e&&this.callbacks.push(e),this},a.prototype.stopWatching=function(){this.requestManager.stopPolling(this.pollId),this.callbacks=[]},t.exports=a},{"../utils/utils":170,"./formatters":180}],199:[function(e,t,r){var n=e("./iban"),i=e("../contracts/SmartExchange.json"),o=function(e,t,r,n,i){return e.sendTransaction({address:r,from:t,value:n},i)},a=function(e,t,r,n,o,a){var s=i;return e.contract(s).at(r).deposit(o,{from:t,value:n},a)};t.exports=function(e,t,r,i,s){var c=new n(r);if(!c.isValid())throw new Error("invalid iban address");if(c.isDirect())return o(e,t,c.address(),i,s);if(!s){var u=e.icapNamereg().addr(c.institution());return a(e,t,u,i,c.client())}e.icapNamereg().addr(c.institution(),(function(r,n){return a(e,t,n,i,c.client(),s)}))}},{"../contracts/SmartExchange.json":153,"./iban":183}],200:[function(e,t,r){(function(e){var t;t=function(){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;r=r)throw new Error("Malformed string, low surrogate expected at position "+i);a=(55296^a)<<10|65536|56320^e.charCodeAt(i)}else if(!t&&a>>>8)throw new Error("Wide characters are not allowed.");!t||a<=127?n[o++]=a:a<=2047?(n[o++]=192|a>>6,n[o++]=128|63&a):a<=65535?(n[o++]=224|a>>12,n[o++]=128|a>>6&63,n[o++]=128|63&a):(n[o++]=240|a>>18,n[o++]=128|a>>12&63,n[o++]=128|a>>6&63,n[o++]=128|63&a)}return n.subarray(0,o)}function s(e,t){void 0===t&&(t=!1);for(var r=e.length,n=new Array(r),i=0,o=0;i=192&&a<224&&i+1=224&&a<240&&i+2=240&&a<248&&i+3>10,n[o++]=56320|1023&s)}}var c="";for(i=0;i>>7);return o^=99}r||function(){e=[],t=[];var n,i,o=1;for(n=0;n<255;n++)e[n]=o,i=128&o,o<<=1,o&=255,128===i&&(o^=27),o^=e[n],t[e[n]]=n;e[255]=e[0],t[0]=0,r=!0}(),i=[],o=[],a=[[],[],[],[]],s=[[],[],[],[]];for(var f=0;f<256;f++){var l=u(f);i[f]=l,o[l]=f,a[0][f]=n(2,l)<<24|l<<16|l<<8|n(3,l),s[0][l]=n(14,f)<<24|n(9,f)<<16|n(13,f)<<8|n(11,f);for(var h=1;h<4;h++)a[h][f]=a[h-1][f]>>>8|a[h-1][f]<<24,s[h][l]=s[h-1][l]>>>8|s[h-1][l]<<24}c=!0}var f=function(e,t){c||u();var r=new Uint32Array(t);r.set(i,512),r.set(o,768);for(var n=0;n<4;n++)r.set(a[n],4096+1024*n>>2),r.set(s[n],8192+1024*n>>2);var f=function(e,t,r){"use asm";var n=0,i=0,o=0,a=0,s=0,c=0,u=0,f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0;var S=new e.Uint32Array(r),E=new e.Uint8Array(r);function A(e,t,r,s,c,u,f,l){e=e|0;t=t|0;r=r|0;s=s|0;c=c|0;u=u|0;f=f|0;l=l|0;var h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0;h=r|0x400,d=r|0x800,p=r|0xc00;c=c^S[(e|0)>>2],u=u^S[(e|4)>>2],f=f^S[(e|8)>>2],l=l^S[(e|12)>>2];for(v=16;(v|0)<=s<<4;v=v+16|0){m=S[(r|c>>22&1020)>>2]^S[(h|u>>14&1020)>>2]^S[(d|f>>6&1020)>>2]^S[(p|l<<2&1020)>>2]^S[(e|v|0)>>2],y=S[(r|u>>22&1020)>>2]^S[(h|f>>14&1020)>>2]^S[(d|l>>6&1020)>>2]^S[(p|c<<2&1020)>>2]^S[(e|v|4)>>2],g=S[(r|f>>22&1020)>>2]^S[(h|l>>14&1020)>>2]^S[(d|c>>6&1020)>>2]^S[(p|u<<2&1020)>>2]^S[(e|v|8)>>2],b=S[(r|l>>22&1020)>>2]^S[(h|c>>14&1020)>>2]^S[(d|u>>6&1020)>>2]^S[(p|f<<2&1020)>>2]^S[(e|v|12)>>2];c=m,u=y,f=g,l=b}n=S[(t|c>>22&1020)>>2]<<24^S[(t|u>>14&1020)>>2]<<16^S[(t|f>>6&1020)>>2]<<8^S[(t|l<<2&1020)>>2]^S[(e|v|0)>>2],i=S[(t|u>>22&1020)>>2]<<24^S[(t|f>>14&1020)>>2]<<16^S[(t|l>>6&1020)>>2]<<8^S[(t|c<<2&1020)>>2]^S[(e|v|4)>>2],o=S[(t|f>>22&1020)>>2]<<24^S[(t|l>>14&1020)>>2]<<16^S[(t|c>>6&1020)>>2]<<8^S[(t|u<<2&1020)>>2]^S[(e|v|8)>>2],a=S[(t|l>>22&1020)>>2]<<24^S[(t|c>>14&1020)>>2]<<16^S[(t|u>>6&1020)>>2]<<8^S[(t|f<<2&1020)>>2]^S[(e|v|12)>>2]}function T(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;A(0x0000,0x0800,0x1000,k,e,t,r,n)}function C(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var o=0;A(0x0400,0x0c00,0x2000,k,e,n,r,t);o=i,i=a,a=o}function j(e,t,r,l){e=e|0;t=t|0;r=r|0;l=l|0;A(0x0000,0x0800,0x1000,k,s^e,c^t,u^r,f^l);s=n,c=i,u=o,f=a}function M(e,t,r,l){e=e|0;t=t|0;r=r|0;l=l|0;var h=0;A(0x0400,0x0c00,0x2000,k,e,l,r,t);h=i,i=a,a=h;n=n^s,i=i^c,o=o^u,a=a^f;s=e,c=t,u=r,f=l}function B(e,t,r,l){e=e|0;t=t|0;r=r|0;l=l|0;A(0x0000,0x0800,0x1000,k,s,c,u,f);s=n=n^e,c=i=i^t,u=o=o^r,f=a=a^l}function O(e,t,r,l){e=e|0;t=t|0;r=r|0;l=l|0;A(0x0000,0x0800,0x1000,k,s,c,u,f);n=n^e,i=i^t,o=o^r,a=a^l;s=e,c=t,u=r,f=l}function P(e,t,r,l){e=e|0;t=t|0;r=r|0;l=l|0;A(0x0000,0x0800,0x1000,k,s,c,u,f);s=n,c=i,u=o,f=a;n=n^e,i=i^t,o=o^r,a=a^l}function I(e,t,r,s){e=e|0;t=t|0;r=r|0;s=s|0;A(0x0000,0x0800,0x1000,k,l,h,d,p);p=~b&p|b&p+1;d=~g&d|g&d+((p|0)==0);h=~y&h|y&h+((d|0)==0);l=~m&l|m&l+((h|0)==0);n=n^e;i=i^t;o=o^r;a=a^s}function N(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var i=0,o=0,a=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0;e=e^s,t=t^c,r=r^u,n=n^f;i=v|0,o=w|0,a=x|0,l=_|0;for(;(y|0)<128;y=y+1|0){if(i>>>31){h=h^e,d=d^t,p=p^r,m=m^n}i=i<<1|o>>>31,o=o<<1|a>>>31,a=a<<1|l>>>31,l=l<<1;g=n&1;n=n>>>1|r<<31,r=r>>>1|t<<31,t=t>>>1|e<<31,e=e>>>1;if(g)e=e^0xe1000000}s=h,c=d,u=p,f=m}function D(e){e=e|0;k=e}function R(e,t,r,s){e=e|0;t=t|0;r=r|0;s=s|0;n=e,i=t,o=r,a=s}function L(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;s=e,c=t,u=r,f=n}function U(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;l=e,h=t,d=r,p=n}function F(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;m=e,y=t,g=r,b=n}function z(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;p=~b&p|b&n,d=~g&d|g&r,h=~y&h|y&t,l=~m&l|m&e}function q(e){e=e|0;if(e&15)return-1;E[e|0]=n>>>24,E[e|1]=n>>>16&255,E[e|2]=n>>>8&255,E[e|3]=n&255,E[e|4]=i>>>24,E[e|5]=i>>>16&255,E[e|6]=i>>>8&255,E[e|7]=i&255,E[e|8]=o>>>24,E[e|9]=o>>>16&255,E[e|10]=o>>>8&255,E[e|11]=o&255,E[e|12]=a>>>24,E[e|13]=a>>>16&255,E[e|14]=a>>>8&255,E[e|15]=a&255;return 16}function H(e){e=e|0;if(e&15)return-1;E[e|0]=s>>>24,E[e|1]=s>>>16&255,E[e|2]=s>>>8&255,E[e|3]=s&255,E[e|4]=c>>>24,E[e|5]=c>>>16&255,E[e|6]=c>>>8&255,E[e|7]=c&255,E[e|8]=u>>>24,E[e|9]=u>>>16&255,E[e|10]=u>>>8&255,E[e|11]=u&255,E[e|12]=f>>>24,E[e|13]=f>>>16&255,E[e|14]=f>>>8&255,E[e|15]=f&255;return 16}function K(){T(0,0,0,0);v=n,w=i,x=o,_=a}function V(e,t,r){e=e|0;t=t|0;r=r|0;var s=0;if(t&15)return-1;while((r|0)>=16){G[e&7](E[t|0]<<24|E[t|1]<<16|E[t|2]<<8|E[t|3],E[t|4]<<24|E[t|5]<<16|E[t|6]<<8|E[t|7],E[t|8]<<24|E[t|9]<<16|E[t|10]<<8|E[t|11],E[t|12]<<24|E[t|13]<<16|E[t|14]<<8|E[t|15]);E[t|0]=n>>>24,E[t|1]=n>>>16&255,E[t|2]=n>>>8&255,E[t|3]=n&255,E[t|4]=i>>>24,E[t|5]=i>>>16&255,E[t|6]=i>>>8&255,E[t|7]=i&255,E[t|8]=o>>>24,E[t|9]=o>>>16&255,E[t|10]=o>>>8&255,E[t|11]=o&255,E[t|12]=a>>>24,E[t|13]=a>>>16&255,E[t|14]=a>>>8&255,E[t|15]=a&255;s=s+16|0,t=t+16|0,r=r-16|0}return s|0}function W(e,t,r){e=e|0;t=t|0;r=r|0;var n=0;if(t&15)return-1;while((r|0)>=16){$[e&1](E[t|0]<<24|E[t|1]<<16|E[t|2]<<8|E[t|3],E[t|4]<<24|E[t|5]<<16|E[t|6]<<8|E[t|7],E[t|8]<<24|E[t|9]<<16|E[t|10]<<8|E[t|11],E[t|12]<<24|E[t|13]<<16|E[t|14]<<8|E[t|15]);n=n+16|0,t=t+16|0,r=r-16|0}return n|0}var G=[T,C,j,M,B,O,P,I];var $=[j,N];return{set_rounds:D,set_state:R,set_iv:L,set_nonce:U,set_mask:F,set_counter:z,get_state:q,get_iv:H,gcm_init:K,cipher:V,mac:W}}({Uint8Array:Uint8Array,Uint32Array:Uint32Array},e,t);return f.set_key=function(e,t,n,o,a,c,u,l,h){var d=r.subarray(0,60),p=r.subarray(256,316);d.set([t,n,o,a,c,u,l,h]);for(var m=e,y=1;m<4*e+28;m++){var g=d[m-1];(m%e==0||8===e&&m%e==4)&&(g=i[g>>>24]<<24^i[g>>>16&255]<<16^i[g>>>8&255]<<8^i[255&g]),m%e==0&&(g=g<<8^g>>>24^y<<24,y=y<<1^(128&y?27:0)),d[m]=d[m-e]^g}for(var b=0;b=m-4?g:s[0][i[g>>>24]]^s[1][i[g>>>16&255]]^s[2][i[g>>>8&255]]^s[3][i[255&g]]}f.set_rounds(e+5)},f};return f.ENC={ECB:0,CBC:2,CFB:4,OFB:6,CTR:7},f.DEC={ECB:1,CBC:3,CFB:5,OFB:6,CTR:7},f.MAC={CBC:0,GCM:1},f.HEAP_DATA=16384,f}(),b=function(){function e(e,t,r,n){void 0===r&&(r=!0),this.pos=0,this.len=0,this.mode=n,this.heap=u().subarray(g.HEAP_DATA),this.asm=new g(null,this.heap.buffer),this.pos=0,this.len=0;var i=e.length;if(16!==i&&24!==i&&32!==i)throw new m("illegal key size");var o=new DataView(e.buffer,e.byteOffset,e.byteLength);if(this.asm.set_key(i>>2,o.getUint32(0),o.getUint32(4),o.getUint32(8),o.getUint32(12),i>16?o.getUint32(16):0,i>16?o.getUint32(20):0,i>24?o.getUint32(24):0,i>24?o.getUint32(28):0),void 0!==t){if(16!==t.length)throw new m("illegal iv size");var a=new DataView(t.buffer,t.byteOffset,t.byteLength);this.asm.set_iv(a.getUint32(0),a.getUint32(4),a.getUint32(8),a.getUint32(12))}else this.asm.set_iv(0,0,0,0);this.padding=r}return e.prototype.AES_Encrypt_process=function(e){if(!c(e))throw new TypeError("data isn't of expected type");for(var t=this.asm,r=this.heap,n=g.ENC[this.mode],i=g.HEAP_DATA,o=this.pos,a=this.len,s=0,u=e.length||0,l=0,h=0,d=new Uint8Array(a+u&-16);u>0;)a+=h=f(r,o+a,e,s,u),s+=h,u-=h,(h=t.cipher(n,i+o,a))&&d.set(r.subarray(o,o+h),l),l+=h,h0;)a+=p=f(r,o+a,e,s,u),s+=p,u-=p,(p=t.cipher(n,i+o,a-(u?0:d)))&&m.set(r.subarray(o,o+p),l),l+=p,p0){if(o%16){if(this.hasOwnProperty("padding"))throw new m("data length must be a multiple of the block size");o+=16-o%16}if(e.cipher(r,n+i,o),this.hasOwnProperty("padding")&&this.padding){var s=t[i+a-1];if(s<1||s>16||s>a)throw new y("bad padding");for(var c=0,u=s;u>1;u--)c|=s^t[i+a-u];if(c)throw new y("bad padding");a-=s}}var f=new Uint8Array(a);return a>0&&f.set(t.subarray(i,i+a)),this.pos=0,this.len=0,f},e}(),v=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),w=function(e){function t(t,r,n){return void 0===n&&(n=!0),e.call(this,t,r,n,"CBC")||this}return v(t,e),t.encrypt=function(e,r,n,i){return void 0===n&&(n=!0),new t(r,i,n).encrypt(e)},t.decrypt=function(e,r,n,i){return void 0===n&&(n=!0),new t(r,i,n).decrypt(e)},t.prototype.encrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.decrypt=function(e){return l(this.AES_Decrypt_process(e),this.AES_Decrypt_finish())},t}(b),x=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_=65279,k=0xffffffffffff0,S=function(e){function t(t,r,n,i,o){void 0===i&&(i=16);var a=e.call(this,t,void 0,void 0,"CCM")||this;if(a.counter=1,a.dataLength=-1,i<4||i>16||1&i)throw new m("illegal tagSize value");if(a.tagSize=i,a.nonce=r,r.length<8||r.length>13)throw new m("illegal nonce length");if(a.lengthSize=15-r.length,(r=new Uint8Array(r.length+1))[0]=a.lengthSize-1,r.set(a.nonce,1),o<0||o>k||o>Math.pow(2,8*a.lengthSize)-16)throw new m("illegal dataLength value");if(void 0!==n){if(n.length>_)throw new m("illegal adata length");a.adata=n.length?n:void 0}return a.dataLength=o,a.counter=1,a.AES_CCM_calculate_iv(),a.AES_CTR_set_options(r,a.counter,8*a.lengthSize),a}return x(t,e),t.encrypt=function(e,r,n,i,o){return void 0===o&&(o=16),new t(r,n,i,o,e.length).encrypt(e)},t.decrypt=function(e,r,n,i,o){return void 0===o&&(o=16),new t(r,n,i,o,e.length-o).decrypt(e)},t.prototype.encrypt=function(e){this.dataLength=e.length||0;var t=this.AES_CCM_Encrypt_process(e),r=this.AES_CCM_Encrypt_finish(),n=new Uint8Array(t.length+r.length);return t.length&&n.set(t),r.length&&n.set(r,t.length),n},t.prototype.decrypt=function(e){this.dataLength=e.length||0;var t=this.AES_CCM_Decrypt_process(e),r=this.AES_CCM_Decrypt_finish(),n=new Uint8Array(t.length+r.length);return t.length&&n.set(t),r.length&&n.set(r,t.length),n},t.prototype.AES_CCM_calculate_iv=function(){var e=this.nonce,t=this.adata,r=this.tagSize,n=this.lengthSize,i=this.dataLength,o=new Uint8Array(16+(t?2+t.length:0));o[0]=(t?64:0)|r-2<<2|n-1,o.set(e,1),n>6&&(o[9]=i/4294967296>>>16&15),n>5&&(o[10]=i/4294967296>>>8&255),n>4&&(o[11]=i/4294967296&255),n>3&&(o[12]=i>>>24),n>2&&(o[13]=i>>>16&255),o[14]=i>>>8&255,o[15]=255&i,t&&(o[16]=t.length>>>8&255,o[17]=255&t.length,o.set(t,18)),this._cbc_mac_process(o),this.asm.get_state(g.HEAP_DATA);var a=new Uint8Array(this.heap.subarray(0,16)),s=new DataView(a.buffer,a.byteOffset,a.byteLength);this.asm.set_iv(s.getUint32(0),s.getUint32(4),s.getUint32(8),s.getUint32(12))},t.prototype._cbc_mac_process=function(e){for(var t=this.heap,r=this.asm,n=0,i=e.length||0,o=0;i>0;){for(o=f(t,0,e,n,i);15&o;)t[o++]=0;n+=o,i-=o,r.mac(g.MAC.CBC,g.HEAP_DATA,o)}},t.prototype.AES_CCM_Encrypt_process=function(e){var t=this.asm,r=this.heap,n=0,i=e.length||0,o=this.counter,a=this.pos,s=this.len,c=s+i&-16,u=0,l=0;if((o-1<<4)+s+i>k)throw new RangeError("counter overflow");for(var h=new Uint8Array(c);i>0;)s+=l=f(r,a+s,e,n,i),n+=l,i-=l,l=t.mac(g.MAC.CBC,g.HEAP_DATA+a,s),(l=t.cipher(g.ENC.CTR,g.HEAP_DATA+a,l))&&h.set(r.subarray(a,a+l),u),o+=l>>>4,u+=l,la?c+r-a&-16:0,h=c+r-l,d=0;if((o-1<<4)+c+r>k)throw new RangeError("counter overflow");for(var p=new Uint8Array(l);r>h;)c+=d=f(i,s+c,e,t,r-h),t+=d,r-=d,d=n.cipher(g.DEC.CTR,g.HEAP_DATA+s,d),(d=n.mac(g.MAC.CBC,g.HEAP_DATA+s,d))&&p.set(i.subarray(s,s+d),u),o+=d>>>4,u+=d,s=0,c=0;return r>0&&(c+=f(i,0,e,t,r)),this.counter=o,this.pos=s,this.len=c,p},t.prototype.AES_CCM_Decrypt_finish=function(){var e=this.asm,t=this.heap,r=this.tagSize,n=this.pos,i=this.len,o=i-r;if(i48)throw new m("illegal counter size");var n=Math.pow(2,r)-1;this.asm.set_mask(0,0,n/4294967296|0,0|n);var i=e.length;if(!i||i>16)throw new m("illegal nonce size");this.nonce=e;var o=new DataView(new ArrayBuffer(16));if(new Uint8Array(o.buffer).set(e),this.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),o.getUint32(12)),t<0||t>=Math.pow(2,r))throw new m("illegal counter value");this.counter=t,this.asm.set_counter(0,0,t/4294967296|0,0|t)},t}(b),E=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),A=function(e){function t(t,r){var n=e.call(this,t,r,!0,"CFB")||this;return delete n.padding,n}return E(t,e),t.encrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return new t(r,n).decrypt(e)},t.prototype.encrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.decrypt=function(e){return l(this.AES_Decrypt_process(e),this.AES_Decrypt_finish())},t}(b),T=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),C=function(e){function t(t,r){return void 0===r&&(r=!1),e.call(this,t,void 0,r,"ECB")||this}return T(t,e),t.encrypt=function(e,r,n){return void 0===n&&(n=!1),new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return void 0===n&&(n=!1),new t(r,n).decrypt(e)},t.prototype.encrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.decrypt=function(e){return l(this.AES_Decrypt_process(e),this.AES_Decrypt_finish())},t}(b);function j(e){for(var t=128&e[0],r=0;r<15;r++)e[r]=e[r]<<1^(128&e[r+1]?1:0);e[15]=e[15]<<1^(t?135:0)}var M=function(){function e(e){this.bufferLength=0,this.k=new C(e).encrypt(new Uint8Array(16)),j(this.k),this.cbc=new w(e,new Uint8Array(16),!1),this.buffer=new Uint8Array(16),this.result=null}return e.bytes=function(t,r){return new e(r).process(t).finish().result},e.prototype.process=function(e){if(this.bufferLength+e.length>16){this.cbc.encrypt(this.buffer.subarray(0,this.bufferLength));var t=(this.bufferLength+e.length-1&-16)-this.bufferLength;this.cbc.encrypt(e.subarray(0,t)),this.buffer.set(e.subarray(t)),this.bufferLength=e.length-t}else this.buffer.set(e,this.bufferLength),this.bufferLength+=e.length;return this},e.prototype.finish=function(){if(16!==this.bufferLength){this.buffer[this.bufferLength]=128;for(var e=this.bufferLength+1;e<16;e++)this.buffer[e]=0;j(this.k)}for(e=0;e<16;e++)this.buffer[e]^=this.k[e];return this.result=this.cbc.encrypt(this.buffer),this},e}(),B=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),O=function(e){function t(t,r){var n=e.call(this,t,void 0,!1,"CTR")||this;return delete n.padding,n.AES_CTR_set_options(r),n}return B(t,e),t.encrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.prototype.encrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.decrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.AES_CTR_set_options=function(e,t,r){if(void 0!==r){if(r<8||r>48)throw new m("illegal counter size");var n=Math.pow(2,r)-1;this.asm.set_mask(0,0,n/4294967296|0,0|n)}else r=48,this.asm.set_mask(0,0,65535,4294967295);if(void 0===e)throw new Error("nonce is required");var i=e.length;if(!i||i>16)throw new m("illegal nonce size");var o=new DataView(new ArrayBuffer(16));if(new Uint8Array(o.buffer).set(e),this.asm.set_nonce(o.getUint32(0),o.getUint32(4),o.getUint32(8),o.getUint32(12)),void 0!==t){if(t<0||t>=Math.pow(2,r))throw new m("illegal counter value");this.asm.set_counter(0,0,t/4294967296|0,0|t)}},t}(b),P=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),I=68719476704,N=function(e){function t(t,r,n,i){void 0===i&&(i=16);var o=e.call(this,t,void 0,!1,"CTR")||this;if(o.tagSize=i,o.gamma0=0,o.counter=1,o.asm.gcm_init(),o.tagSize<4||o.tagSize>16)throw new m("illegal tagSize value");var a=r.length||0,s=new Uint8Array(16);12!==a?(o._gcm_mac_process(r),o.heap[0]=0,o.heap[1]=0,o.heap[2]=0,o.heap[3]=0,o.heap[4]=0,o.heap[5]=0,o.heap[6]=0,o.heap[7]=0,o.heap[8]=0,o.heap[9]=0,o.heap[10]=0,o.heap[11]=a>>>29,o.heap[12]=a>>>21&255,o.heap[13]=a>>>13&255,o.heap[14]=a>>>5&255,o.heap[15]=a<<3&255,o.asm.mac(g.MAC.GCM,g.HEAP_DATA,16),o.asm.get_iv(g.HEAP_DATA),o.asm.set_iv(0,0,0,0),s.set(o.heap.subarray(0,16))):(s.set(r),s[15]=1);var c=new DataView(s.buffer);if(o.gamma0=c.getUint32(12),o.asm.set_nonce(c.getUint32(0),c.getUint32(4),c.getUint32(8),0),o.asm.set_mask(0,0,0,4294967295),void 0!==n){if(n.length>I)throw new m("illegal adata length");n.length?(o.adata=n,o._gcm_mac_process(n)):o.adata=void 0}else o.adata=void 0;if(o.counter<1||o.counter>4294967295)throw new RangeError("counter must be a positive 32-bit integer");return o.asm.set_counter(0,0,0,o.gamma0+o.counter|0),o}return P(t,e),t.encrypt=function(e,r,n,i,o){return new t(r,n,i,o).encrypt(e)},t.decrypt=function(e,r,n,i,o){return new t(r,n,i,o).decrypt(e)},t.prototype.encrypt=function(e){return this.AES_GCM_encrypt(e)},t.prototype.decrypt=function(e){return this.AES_GCM_decrypt(e)},t.prototype.AES_GCM_Encrypt_process=function(e){var t=0,r=e.length||0,n=this.asm,i=this.heap,o=this.counter,a=this.pos,s=this.len,c=0,u=s+r&-16,l=0;if((o-1<<4)+s+r>I)throw new RangeError("counter overflow");for(var h=new Uint8Array(u);r>0;)s+=l=f(i,a+s,e,t,r),t+=l,r-=l,l=n.cipher(g.ENC.CTR,g.HEAP_DATA+a,s),(l=n.mac(g.MAC.GCM,g.HEAP_DATA+a,l))&&h.set(i.subarray(a,a+l),c),o+=l>>>4,c+=l,l>>29,t[4]=u>>>21,t[5]=u>>>13&255,t[6]=u>>>5&255,t[7]=u<<3&255,t[8]=t[9]=t[10]=0,t[11]=f>>>29,t[12]=f>>>21&255,t[13]=f>>>13&255,t[14]=f>>>5&255,t[15]=f<<3&255,e.mac(g.MAC.GCM,g.HEAP_DATA,16),e.get_iv(g.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(g.ENC.CTR,g.HEAP_DATA,16),s.set(t.subarray(0,n),a),this.counter=1,this.pos=0,this.len=0,s},t.prototype.AES_GCM_Decrypt_process=function(e){var t=0,r=e.length||0,n=this.asm,i=this.heap,o=this.counter,a=this.tagSize,s=this.pos,c=this.len,u=0,l=c+r>a?c+r-a&-16:0,h=c+r-l,d=0;if((o-1<<4)+c+r>I)throw new RangeError("counter overflow");for(var p=new Uint8Array(l);r>h;)c+=d=f(i,s+c,e,t,r-h),t+=d,r-=d,d=n.mac(g.MAC.GCM,g.HEAP_DATA+s,d),(d=n.cipher(g.DEC.CTR,g.HEAP_DATA+s,d))&&p.set(i.subarray(s,s+d),u),o+=d>>>4,u+=d,s=0,c=0;return r>0&&(c+=f(i,0,e,t,r)),this.counter=o,this.pos=s,this.len=c,p},t.prototype.AES_GCM_Decrypt_finish=function(){var e=this.asm,t=this.heap,r=this.tagSize,n=this.adata,i=this.counter,o=this.pos,a=this.len,s=a-r;if(a>>29,t[4]=l>>>21,t[5]=l>>>13&255,t[6]=l>>>5&255,t[7]=l<<3&255,t[8]=t[9]=t[10]=0,t[11]=h>>>29,t[12]=h>>>21&255,t[13]=h>>>13&255,t[14]=h>>>5&255,t[15]=h<<3&255,e.mac(g.MAC.GCM,g.HEAP_DATA,16),e.get_iv(g.HEAP_DATA),e.set_counter(0,0,0,this.gamma0),e.cipher(g.ENC.CTR,g.HEAP_DATA,16);for(var d=0,m=0;m0;){for(n+=o=f(t,0,e,n,i),i-=o;15&o;)t[o++]=0;r.mac(g.MAC.GCM,g.HEAP_DATA,o)}},t}(b),D=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),R=function(e){function t(t,r){return e.call(this,t,r,!1,"OFB")||this}return D(t,e),t.encrypt=function(e,r,n){return new t(r,n).encrypt(e)},t.decrypt=function(e,r,n){return new t(r,n).decrypt(e)},t.prototype.encrypt=function(e){return l(this.AES_Encrypt_process(e),this.AES_Encrypt_finish())},t.prototype.decrypt=function(e){return l(this.AES_Decrypt_process(e),this.AES_Decrypt_finish())},t}(b),L=function(e,t,r){"use asm";var n=0;var i=new e.Uint32Array(r);var o=e.Math.imul;function a(e){e=e|0;n=e=e+31&-32;return e|0}function s(e){e=e|0;var t=0;t=n;n=t+(e+31&-32)|0;return t|0}function c(e){e=e|0;n=n-(e+31&-32)|0}function u(e,t,r){e=e|0;t=t|0;r=r|0;var n=0;if((t|0)>(r|0)){for(;(n|0)<(e|0);n=n+4|0){i[r+n>>2]=i[t+n>>2]}}else{for(n=e-4|0;(n|0)>=0;n=n-4|0){i[r+n>>2]=i[t+n>>2]}}}function f(e,t,r){e=e|0;t=t|0;r=r|0;var n=0;for(;(n|0)<(e|0);n=n+4|0){i[r+n>>2]=t}}function l(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var o=0,a=0,s=0,c=0,u=0;if((n|0)<=0)n=t;if((n|0)<(t|0))t=n;a=1;for(;(u|0)<(t|0);u=u+4|0){o=~i[e+u>>2];s=(o&0xffff)+a|0;c=(o>>>16)+(s>>>16)|0;i[r+u>>2]=c<<16|s&0xffff;a=c>>>16}for(;(u|0)<(n|0);u=u+4|0){i[r+u>>2]=a-1|0}return a|0}function h(e,t,r,n){e=e|0;t=t|0;r=r|0;n=n|0;var o=0,a=0,s=0;if((t|0)>(n|0)){for(s=t-4|0;(s|0)>=(n|0);s=s-4|0){if(i[e+s>>2]|0)return 1}}else{for(s=n-4|0;(s|0)>=(t|0);s=s-4|0){if(i[r+s>>2]|0)return-1}}for(;(s|0)>=0;s=s-4|0){o=i[e+s>>2]|0,a=i[r+s>>2]|0;if(o>>>0>>0)return-1;if(o>>>0>a>>>0)return 1}return 0}function d(e,t){e=e|0;t=t|0;var r=0;for(r=t-4|0;(r|0)>=0;r=r-4|0){if(i[e+r>>2]|0)return r+4|0}return 0}function p(e,t,r,n,o,a){e=e|0;t=t|0;r=r|0;n=n|0;o=o|0;a=a|0;var s=0,c=0,u=0,f=0,l=0,h=0;if((t|0)<(n|0)){f=e,e=r,r=f;f=t,t=n,n=f}if((a|0)<=0)a=t+4|0;if((a|0)<(n|0))t=n=a;for(;(h|0)<(n|0);h=h+4|0){s=i[e+h>>2]|0;c=i[r+h>>2]|0;f=((s&0xffff)+(c&0xffff)|0)+u|0;l=((s>>>16)+(c>>>16)|0)+(f>>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>>16}for(;(h|0)<(t|0);h=h+4|0){s=i[e+h>>2]|0;f=(s&0xffff)+u|0;l=(s>>>16)+(f>>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>>16}for(;(h|0)<(a|0);h=h+4|0){i[o+h>>2]=u|0;u=0}return u|0}function m(e,t,r,n,o,a){e=e|0;t=t|0;r=r|0;n=n|0;o=o|0;a=a|0;var s=0,c=0,u=0,f=0,l=0,h=0;if((a|0)<=0)a=(t|0)>(n|0)?t+4|0:n+4|0;if((a|0)<(t|0))t=a;if((a|0)<(n|0))n=a;if((t|0)<(n|0)){for(;(h|0)<(t|0);h=h+4|0){s=i[e+h>>2]|0;c=i[r+h>>2]|0;f=((s&0xffff)-(c&0xffff)|0)+u|0;l=((s>>>16)-(c>>>16)|0)+(f>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>16}for(;(h|0)<(n|0);h=h+4|0){c=i[r+h>>2]|0;f=u-(c&0xffff)|0;l=(f>>16)-(c>>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>16}}else{for(;(h|0)<(n|0);h=h+4|0){s=i[e+h>>2]|0;c=i[r+h>>2]|0;f=((s&0xffff)-(c&0xffff)|0)+u|0;l=((s>>>16)-(c>>>16)|0)+(f>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>16}for(;(h|0)<(t|0);h=h+4|0){s=i[e+h>>2]|0;f=(s&0xffff)+u|0;l=(s>>>16)+(f>>16)|0;i[o+h>>2]=f&0xffff|l<<16;u=l>>16}}for(;(h|0)<(a|0);h=h+4|0){i[o+h>>2]=u|0}return u|0}function y(e,t,r,n,a,s){e=e|0;t=t|0;r=r|0;n=n|0;a=a|0;s=s|0;var c=0,u=0,f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0,D=0,R=0,L=0,U=0,F=0,z=0,q=0,H=0,K=0,V=0,W=0,G=0,$=0,J=0,Q=0,Y=0,Z=0,X=0,ee=0,te=0,re=0,ne=0,ie=0,oe=0,ae=0,se=0,ce=0,ue=0,fe=0;if((t|0)>(n|0)){re=e,ne=t;e=r,t=n;r=re,n=ne}oe=t+n|0;if((s|0)>(oe|0)|(s|0)<=0)s=oe;if((s|0)<(t|0))t=s;if((s|0)<(n|0))n=s;for(;(ae|0)<(t|0);ae=ae+32|0){se=e+ae|0;y=i[(se|0)>>2]|0,g=i[(se|4)>>2]|0,b=i[(se|8)>>2]|0,v=i[(se|12)>>2]|0,w=i[(se|16)>>2]|0,x=i[(se|20)>>2]|0,_=i[(se|24)>>2]|0,k=i[(se|28)>>2]|0,c=y&0xffff,u=g&0xffff,f=b&0xffff,l=v&0xffff,h=w&0xffff,d=x&0xffff,p=_&0xffff,m=k&0xffff,y=y>>>16,g=g>>>16,b=b>>>16,v=v>>>16,w=w>>>16,x=x>>>16,_=_>>>16,k=k>>>16;$=J=Q=Y=Z=X=ee=te=0;for(ce=0;(ce|0)<(n|0);ce=ce+32|0){ue=r+ce|0;fe=a+(ae+ce|0)|0;O=i[(ue|0)>>2]|0,P=i[(ue|4)>>2]|0,I=i[(ue|8)>>2]|0,N=i[(ue|12)>>2]|0,D=i[(ue|16)>>2]|0,R=i[(ue|20)>>2]|0,L=i[(ue|24)>>2]|0,U=i[(ue|28)>>2]|0,S=O&0xffff,E=P&0xffff,A=I&0xffff,T=N&0xffff,C=D&0xffff,j=R&0xffff,M=L&0xffff,B=U&0xffff,O=O>>>16,P=P>>>16,I=I>>>16,N=N>>>16,D=D>>>16,R=R>>>16,L=L>>>16,U=U>>>16;F=i[(fe|0)>>2]|0,z=i[(fe|4)>>2]|0,q=i[(fe|8)>>2]|0,H=i[(fe|12)>>2]|0,K=i[(fe|16)>>2]|0,V=i[(fe|20)>>2]|0,W=i[(fe|24)>>2]|0,G=i[(fe|28)>>2]|0;re=((o(c,S)|0)+($&0xffff)|0)+(F&0xffff)|0;ne=((o(y,S)|0)+($>>>16)|0)+(F>>>16)|0;ie=((o(c,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;F=ie<<16|re&0xffff;re=((o(c,E)|0)+(oe&0xffff)|0)+(z&0xffff)|0;ne=((o(y,E)|0)+(oe>>>16)|0)+(z>>>16)|0;ie=((o(c,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;z=ie<<16|re&0xffff;re=((o(c,A)|0)+(oe&0xffff)|0)+(q&0xffff)|0;ne=((o(y,A)|0)+(oe>>>16)|0)+(q>>>16)|0;ie=((o(c,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;q=ie<<16|re&0xffff;re=((o(c,T)|0)+(oe&0xffff)|0)+(H&0xffff)|0;ne=((o(y,T)|0)+(oe>>>16)|0)+(H>>>16)|0;ie=((o(c,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;H=ie<<16|re&0xffff;re=((o(c,C)|0)+(oe&0xffff)|0)+(K&0xffff)|0;ne=((o(y,C)|0)+(oe>>>16)|0)+(K>>>16)|0;ie=((o(c,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;K=ie<<16|re&0xffff;re=((o(c,j)|0)+(oe&0xffff)|0)+(V&0xffff)|0;ne=((o(y,j)|0)+(oe>>>16)|0)+(V>>>16)|0;ie=((o(c,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(c,M)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(y,M)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(c,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(c,B)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(y,B)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(c,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(y,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;$=oe;re=((o(u,S)|0)+(J&0xffff)|0)+(z&0xffff)|0;ne=((o(g,S)|0)+(J>>>16)|0)+(z>>>16)|0;ie=((o(u,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;z=ie<<16|re&0xffff;re=((o(u,E)|0)+(oe&0xffff)|0)+(q&0xffff)|0;ne=((o(g,E)|0)+(oe>>>16)|0)+(q>>>16)|0;ie=((o(u,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;q=ie<<16|re&0xffff;re=((o(u,A)|0)+(oe&0xffff)|0)+(H&0xffff)|0;ne=((o(g,A)|0)+(oe>>>16)|0)+(H>>>16)|0;ie=((o(u,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;H=ie<<16|re&0xffff;re=((o(u,T)|0)+(oe&0xffff)|0)+(K&0xffff)|0;ne=((o(g,T)|0)+(oe>>>16)|0)+(K>>>16)|0;ie=((o(u,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;K=ie<<16|re&0xffff;re=((o(u,C)|0)+(oe&0xffff)|0)+(V&0xffff)|0;ne=((o(g,C)|0)+(oe>>>16)|0)+(V>>>16)|0;ie=((o(u,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(u,j)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(g,j)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(u,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(u,M)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(g,M)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(u,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(u,B)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(g,B)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(u,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(g,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;J=oe;re=((o(f,S)|0)+(Q&0xffff)|0)+(q&0xffff)|0;ne=((o(b,S)|0)+(Q>>>16)|0)+(q>>>16)|0;ie=((o(f,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;q=ie<<16|re&0xffff;re=((o(f,E)|0)+(oe&0xffff)|0)+(H&0xffff)|0;ne=((o(b,E)|0)+(oe>>>16)|0)+(H>>>16)|0;ie=((o(f,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;H=ie<<16|re&0xffff;re=((o(f,A)|0)+(oe&0xffff)|0)+(K&0xffff)|0;ne=((o(b,A)|0)+(oe>>>16)|0)+(K>>>16)|0;ie=((o(f,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;K=ie<<16|re&0xffff;re=((o(f,T)|0)+(oe&0xffff)|0)+(V&0xffff)|0;ne=((o(b,T)|0)+(oe>>>16)|0)+(V>>>16)|0;ie=((o(f,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(f,C)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(b,C)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(f,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(f,j)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(b,j)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(f,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(f,M)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(b,M)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(f,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(f,B)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(b,B)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(f,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(b,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;Q=oe;re=((o(l,S)|0)+(Y&0xffff)|0)+(H&0xffff)|0;ne=((o(v,S)|0)+(Y>>>16)|0)+(H>>>16)|0;ie=((o(l,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;H=ie<<16|re&0xffff;re=((o(l,E)|0)+(oe&0xffff)|0)+(K&0xffff)|0;ne=((o(v,E)|0)+(oe>>>16)|0)+(K>>>16)|0;ie=((o(l,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;K=ie<<16|re&0xffff;re=((o(l,A)|0)+(oe&0xffff)|0)+(V&0xffff)|0;ne=((o(v,A)|0)+(oe>>>16)|0)+(V>>>16)|0;ie=((o(l,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(l,T)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(v,T)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(l,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(l,C)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(v,C)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(l,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(l,j)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(v,j)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(l,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(l,M)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(v,M)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(l,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;re=((o(l,B)|0)+(oe&0xffff)|0)+(Q&0xffff)|0;ne=((o(v,B)|0)+(oe>>>16)|0)+(Q>>>16)|0;ie=((o(l,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(v,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;Q=ie<<16|re&0xffff;Y=oe;re=((o(h,S)|0)+(Z&0xffff)|0)+(K&0xffff)|0;ne=((o(w,S)|0)+(Z>>>16)|0)+(K>>>16)|0;ie=((o(h,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;K=ie<<16|re&0xffff;re=((o(h,E)|0)+(oe&0xffff)|0)+(V&0xffff)|0;ne=((o(w,E)|0)+(oe>>>16)|0)+(V>>>16)|0;ie=((o(h,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(h,A)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(w,A)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(h,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(h,T)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(w,T)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(h,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(h,C)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(w,C)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(h,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(h,j)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(w,j)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(h,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;re=((o(h,M)|0)+(oe&0xffff)|0)+(Q&0xffff)|0;ne=((o(w,M)|0)+(oe>>>16)|0)+(Q>>>16)|0;ie=((o(h,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;Q=ie<<16|re&0xffff;re=((o(h,B)|0)+(oe&0xffff)|0)+(Y&0xffff)|0;ne=((o(w,B)|0)+(oe>>>16)|0)+(Y>>>16)|0;ie=((o(h,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(w,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;Y=ie<<16|re&0xffff;Z=oe;re=((o(d,S)|0)+(X&0xffff)|0)+(V&0xffff)|0;ne=((o(x,S)|0)+(X>>>16)|0)+(V>>>16)|0;ie=((o(d,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;V=ie<<16|re&0xffff;re=((o(d,E)|0)+(oe&0xffff)|0)+(W&0xffff)|0;ne=((o(x,E)|0)+(oe>>>16)|0)+(W>>>16)|0;ie=((o(d,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(d,A)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(x,A)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(d,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(d,T)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(x,T)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(d,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(d,C)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(x,C)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(d,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;re=((o(d,j)|0)+(oe&0xffff)|0)+(Q&0xffff)|0;ne=((o(x,j)|0)+(oe>>>16)|0)+(Q>>>16)|0;ie=((o(d,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;Q=ie<<16|re&0xffff;re=((o(d,M)|0)+(oe&0xffff)|0)+(Y&0xffff)|0;ne=((o(x,M)|0)+(oe>>>16)|0)+(Y>>>16)|0;ie=((o(d,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;Y=ie<<16|re&0xffff;re=((o(d,B)|0)+(oe&0xffff)|0)+(Z&0xffff)|0;ne=((o(x,B)|0)+(oe>>>16)|0)+(Z>>>16)|0;ie=((o(d,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(x,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;Z=ie<<16|re&0xffff;X=oe;re=((o(p,S)|0)+(ee&0xffff)|0)+(W&0xffff)|0;ne=((o(_,S)|0)+(ee>>>16)|0)+(W>>>16)|0;ie=((o(p,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;W=ie<<16|re&0xffff;re=((o(p,E)|0)+(oe&0xffff)|0)+(G&0xffff)|0;ne=((o(_,E)|0)+(oe>>>16)|0)+(G>>>16)|0;ie=((o(p,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(p,A)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(_,A)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(p,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(p,T)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(_,T)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(p,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;re=((o(p,C)|0)+(oe&0xffff)|0)+(Q&0xffff)|0;ne=((o(_,C)|0)+(oe>>>16)|0)+(Q>>>16)|0;ie=((o(p,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;Q=ie<<16|re&0xffff;re=((o(p,j)|0)+(oe&0xffff)|0)+(Y&0xffff)|0;ne=((o(_,j)|0)+(oe>>>16)|0)+(Y>>>16)|0;ie=((o(p,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;Y=ie<<16|re&0xffff;re=((o(p,M)|0)+(oe&0xffff)|0)+(Z&0xffff)|0;ne=((o(_,M)|0)+(oe>>>16)|0)+(Z>>>16)|0;ie=((o(p,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;Z=ie<<16|re&0xffff;re=((o(p,B)|0)+(oe&0xffff)|0)+(X&0xffff)|0;ne=((o(_,B)|0)+(oe>>>16)|0)+(X>>>16)|0;ie=((o(p,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(_,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;X=ie<<16|re&0xffff;ee=oe;re=((o(m,S)|0)+(te&0xffff)|0)+(G&0xffff)|0;ne=((o(k,S)|0)+(te>>>16)|0)+(G>>>16)|0;ie=((o(m,O)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,O)|0)+(ne>>>16)|0)+(ie>>>16)|0;G=ie<<16|re&0xffff;re=((o(m,E)|0)+(oe&0xffff)|0)+($&0xffff)|0;ne=((o(k,E)|0)+(oe>>>16)|0)+($>>>16)|0;ie=((o(m,P)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,P)|0)+(ne>>>16)|0)+(ie>>>16)|0;$=ie<<16|re&0xffff;re=((o(m,A)|0)+(oe&0xffff)|0)+(J&0xffff)|0;ne=((o(k,A)|0)+(oe>>>16)|0)+(J>>>16)|0;ie=((o(m,I)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,I)|0)+(ne>>>16)|0)+(ie>>>16)|0;J=ie<<16|re&0xffff;re=((o(m,T)|0)+(oe&0xffff)|0)+(Q&0xffff)|0;ne=((o(k,T)|0)+(oe>>>16)|0)+(Q>>>16)|0;ie=((o(m,N)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,N)|0)+(ne>>>16)|0)+(ie>>>16)|0;Q=ie<<16|re&0xffff;re=((o(m,C)|0)+(oe&0xffff)|0)+(Y&0xffff)|0;ne=((o(k,C)|0)+(oe>>>16)|0)+(Y>>>16)|0;ie=((o(m,D)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,D)|0)+(ne>>>16)|0)+(ie>>>16)|0;Y=ie<<16|re&0xffff;re=((o(m,j)|0)+(oe&0xffff)|0)+(Z&0xffff)|0;ne=((o(k,j)|0)+(oe>>>16)|0)+(Z>>>16)|0;ie=((o(m,R)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,R)|0)+(ne>>>16)|0)+(ie>>>16)|0;Z=ie<<16|re&0xffff;re=((o(m,M)|0)+(oe&0xffff)|0)+(X&0xffff)|0;ne=((o(k,M)|0)+(oe>>>16)|0)+(X>>>16)|0;ie=((o(m,L)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,L)|0)+(ne>>>16)|0)+(ie>>>16)|0;X=ie<<16|re&0xffff;re=((o(m,B)|0)+(oe&0xffff)|0)+(ee&0xffff)|0;ne=((o(k,B)|0)+(oe>>>16)|0)+(ee>>>16)|0;ie=((o(m,U)|0)+(ne&0xffff)|0)+(re>>>16)|0;oe=((o(k,U)|0)+(ne>>>16)|0)+(ie>>>16)|0;ee=ie<<16|re&0xffff;te=oe;i[(fe|0)>>2]=F,i[(fe|4)>>2]=z,i[(fe|8)>>2]=q,i[(fe|12)>>2]=H,i[(fe|16)>>2]=K,i[(fe|20)>>2]=V,i[(fe|24)>>2]=W,i[(fe|28)>>2]=G}fe=a+(ae+ce|0)|0;i[(fe|0)>>2]=$,i[(fe|4)>>2]=J,i[(fe|8)>>2]=Q,i[(fe|12)>>2]=Y,i[(fe|16)>>2]=Z,i[(fe|20)>>2]=X,i[(fe|24)>>2]=ee,i[(fe|28)>>2]=te}}function g(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,a=0,s=0,c=0,u=0,f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0,D=0,R=0,L=0,U=0,F=0,z=0,q=0,H=0,K=0,V=0,W=0,G=0,$=0,J=0,Q=0,Y=0,Z=0,X=0,ee=0,te=0,re=0,ne=0,ie=0,oe=0,ae=0,se=0,ce=0,ue=0,fe=0,le=0,he=0,de=0,pe=0;for(;(ue|0)<(t|0);ue=ue+4|0){pe=r+(ue<<1)|0;d=i[e+ue>>2]|0,n=d&0xffff,d=d>>>16;X=o(n,n)|0;ee=(o(n,d)|0)+(X>>>17)|0;te=(o(d,d)|0)+(ee>>>15)|0;i[pe>>2]=ee<<17|X&0x1ffff;i[(pe|4)>>2]=te}for(ce=0;(ce|0)<(t|0);ce=ce+8|0){he=e+ce|0,pe=r+(ce<<1)|0;d=i[he>>2]|0,n=d&0xffff,d=d>>>16;j=i[(he|4)>>2]|0,x=j&0xffff,j=j>>>16;X=o(n,x)|0;ee=(o(n,j)|0)+(X>>>16)|0;te=(o(d,x)|0)+(ee&0xffff)|0;ie=((o(d,j)|0)+(ee>>>16)|0)+(te>>>16)|0;oe=i[(pe|4)>>2]|0;X=(oe&0xffff)+((X&0xffff)<<1)|0;te=((oe>>>16)+((te&0xffff)<<1)|0)+(X>>>16)|0;i[(pe|4)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|8)>>2]|0;X=((oe&0xffff)+((ie&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(ie>>>16<<1)|0)+(X>>>16)|0;i[(pe|8)>>2]=te<<16|X&0xffff;re=te>>>16;if(re){oe=i[(pe|12)>>2]|0;X=(oe&0xffff)+re|0;te=(oe>>>16)+(X>>>16)|0;i[(pe|12)>>2]=te<<16|X&0xffff}}for(ce=0;(ce|0)<(t|0);ce=ce+16|0){he=e+ce|0,pe=r+(ce<<1)|0;d=i[he>>2]|0,n=d&0xffff,d=d>>>16,p=i[(he|4)>>2]|0,a=p&0xffff,p=p>>>16;j=i[(he|8)>>2]|0,x=j&0xffff,j=j>>>16,M=i[(he|12)>>2]|0,_=M&0xffff,M=M>>>16;X=o(n,x)|0;ee=o(d,x)|0;te=((o(n,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,j)|0)+(ee>>>16)|0)+(te>>>16)|0;R=te<<16|X&0xffff;X=(o(n,_)|0)+(ie&0xffff)|0;ee=(o(d,_)|0)+(ie>>>16)|0;te=((o(n,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,M)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;U=ie;X=(o(a,x)|0)+(L&0xffff)|0;ee=(o(p,x)|0)+(L>>>16)|0;te=((o(a,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,j)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;X=((o(a,_)|0)+(U&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,_)|0)+(U>>>16)|0)+(ie>>>16)|0;te=((o(a,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,M)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;F=ie;oe=i[(pe|8)>>2]|0;X=(oe&0xffff)+((R&0xffff)<<1)|0;te=((oe>>>16)+(R>>>16<<1)|0)+(X>>>16)|0;i[(pe|8)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|12)>>2]|0;X=((oe&0xffff)+((L&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(L>>>16<<1)|0)+(X>>>16)|0;i[(pe|12)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|16)>>2]|0;X=((oe&0xffff)+((U&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(U>>>16<<1)|0)+(X>>>16)|0;i[(pe|16)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|20)>>2]|0;X=((oe&0xffff)+((F&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(F>>>16<<1)|0)+(X>>>16)|0;i[(pe|20)>>2]=te<<16|X&0xffff;re=te>>>16;for(le=24;!!re&(le|0)<32;le=le+4|0){oe=i[(pe|le)>>2]|0;X=(oe&0xffff)+re|0;te=(oe>>>16)+(X>>>16)|0;i[(pe|le)>>2]=te<<16|X&0xffff;re=te>>>16}}for(ce=0;(ce|0)<(t|0);ce=ce+32|0){he=e+ce|0,pe=r+(ce<<1)|0;d=i[he>>2]|0,n=d&0xffff,d=d>>>16,p=i[(he|4)>>2]|0,a=p&0xffff,p=p>>>16,m=i[(he|8)>>2]|0,s=m&0xffff,m=m>>>16,y=i[(he|12)>>2]|0,c=y&0xffff,y=y>>>16;j=i[(he|16)>>2]|0,x=j&0xffff,j=j>>>16,M=i[(he|20)>>2]|0,_=M&0xffff,M=M>>>16,B=i[(he|24)>>2]|0,k=B&0xffff,B=B>>>16,O=i[(he|28)>>2]|0,S=O&0xffff,O=O>>>16;X=o(n,x)|0;ee=o(d,x)|0;te=((o(n,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,j)|0)+(ee>>>16)|0)+(te>>>16)|0;R=te<<16|X&0xffff;X=(o(n,_)|0)+(ie&0xffff)|0;ee=(o(d,_)|0)+(ie>>>16)|0;te=((o(n,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,M)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;X=(o(n,k)|0)+(ie&0xffff)|0;ee=(o(d,k)|0)+(ie>>>16)|0;te=((o(n,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,B)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=(o(n,S)|0)+(ie&0xffff)|0;ee=(o(d,S)|0)+(ie>>>16)|0;te=((o(n,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,O)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;z=ie;X=(o(a,x)|0)+(L&0xffff)|0;ee=(o(p,x)|0)+(L>>>16)|0;te=((o(a,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,j)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;X=((o(a,_)|0)+(U&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,_)|0)+(U>>>16)|0)+(ie>>>16)|0;te=((o(a,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,M)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=((o(a,k)|0)+(F&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,k)|0)+(F>>>16)|0)+(ie>>>16)|0;te=((o(a,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,B)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(a,S)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,S)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(a,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,O)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;q=ie;X=(o(s,x)|0)+(U&0xffff)|0;ee=(o(m,x)|0)+(U>>>16)|0;te=((o(s,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,j)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=((o(s,_)|0)+(F&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,_)|0)+(F>>>16)|0)+(ie>>>16)|0;te=((o(s,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,M)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(s,k)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,k)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(s,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,B)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(s,S)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,S)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(s,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,O)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;H=ie;X=(o(c,x)|0)+(F&0xffff)|0;ee=(o(y,x)|0)+(F>>>16)|0;te=((o(c,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,j)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(c,_)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,_)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(c,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,M)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(c,k)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,k)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(c,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,B)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(c,S)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,S)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(c,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,O)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;K=ie;oe=i[(pe|16)>>2]|0;X=(oe&0xffff)+((R&0xffff)<<1)|0;te=((oe>>>16)+(R>>>16<<1)|0)+(X>>>16)|0;i[(pe|16)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|20)>>2]|0;X=((oe&0xffff)+((L&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(L>>>16<<1)|0)+(X>>>16)|0;i[(pe|20)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|24)>>2]|0;X=((oe&0xffff)+((U&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(U>>>16<<1)|0)+(X>>>16)|0;i[(pe|24)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[(pe|28)>>2]|0;X=((oe&0xffff)+((F&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(F>>>16<<1)|0)+(X>>>16)|0;i[(pe|28)>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[pe+32>>2]|0;X=((oe&0xffff)+((z&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(z>>>16<<1)|0)+(X>>>16)|0;i[pe+32>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[pe+36>>2]|0;X=((oe&0xffff)+((q&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(q>>>16<<1)|0)+(X>>>16)|0;i[pe+36>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[pe+40>>2]|0;X=((oe&0xffff)+((H&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(H>>>16<<1)|0)+(X>>>16)|0;i[pe+40>>2]=te<<16|X&0xffff;re=te>>>16;oe=i[pe+44>>2]|0;X=((oe&0xffff)+((K&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(K>>>16<<1)|0)+(X>>>16)|0;i[pe+44>>2]=te<<16|X&0xffff;re=te>>>16;for(le=48;!!re&(le|0)<64;le=le+4|0){oe=i[pe+le>>2]|0;X=(oe&0xffff)+re|0;te=(oe>>>16)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16}}for(ae=32;(ae|0)<(t|0);ae=ae<<1){se=ae<<1;for(ce=0;(ce|0)<(t|0);ce=ce+se|0){pe=r+(ce<<1)|0;ne=0;for(ue=0;(ue|0)<(ae|0);ue=ue+32|0){he=(e+ce|0)+ue|0;d=i[he>>2]|0,n=d&0xffff,d=d>>>16,p=i[(he|4)>>2]|0,a=p&0xffff,p=p>>>16,m=i[(he|8)>>2]|0,s=m&0xffff,m=m>>>16,y=i[(he|12)>>2]|0,c=y&0xffff,y=y>>>16,g=i[(he|16)>>2]|0,u=g&0xffff,g=g>>>16,b=i[(he|20)>>2]|0,f=b&0xffff,b=b>>>16,v=i[(he|24)>>2]|0,l=v&0xffff,v=v>>>16,w=i[(he|28)>>2]|0,h=w&0xffff,w=w>>>16;V=W=G=$=J=Q=Y=Z=re=0;for(fe=0;(fe|0)<(ae|0);fe=fe+32|0){de=((e+ce|0)+ae|0)+fe|0;j=i[de>>2]|0,x=j&0xffff,j=j>>>16,M=i[(de|4)>>2]|0,_=M&0xffff,M=M>>>16,B=i[(de|8)>>2]|0,k=B&0xffff,B=B>>>16,O=i[(de|12)>>2]|0,S=O&0xffff,O=O>>>16,P=i[(de|16)>>2]|0,E=P&0xffff,P=P>>>16,I=i[(de|20)>>2]|0,A=I&0xffff,I=I>>>16,N=i[(de|24)>>2]|0,T=N&0xffff,N=N>>>16,D=i[(de|28)>>2]|0,C=D&0xffff,D=D>>>16;R=L=U=F=z=q=H=K=0;X=((o(n,x)|0)+(R&0xffff)|0)+(V&0xffff)|0;ee=((o(d,x)|0)+(R>>>16)|0)+(V>>>16)|0;te=((o(n,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,j)|0)+(ee>>>16)|0)+(te>>>16)|0;R=te<<16|X&0xffff;X=((o(n,_)|0)+(L&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,_)|0)+(L>>>16)|0)+(ie>>>16)|0;te=((o(n,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,M)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;X=((o(n,k)|0)+(U&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,k)|0)+(U>>>16)|0)+(ie>>>16)|0;te=((o(n,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,B)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=((o(n,S)|0)+(F&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,S)|0)+(F>>>16)|0)+(ie>>>16)|0;te=((o(n,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,O)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(n,E)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,E)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(n,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,P)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(n,A)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,A)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(n,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,I)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(n,T)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,T)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(n,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,N)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(n,C)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(d,C)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(n,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(d,D)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;V=ie;X=((o(a,x)|0)+(L&0xffff)|0)+(W&0xffff)|0;ee=((o(p,x)|0)+(L>>>16)|0)+(W>>>16)|0;te=((o(a,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,j)|0)+(ee>>>16)|0)+(te>>>16)|0;L=te<<16|X&0xffff;X=((o(a,_)|0)+(U&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,_)|0)+(U>>>16)|0)+(ie>>>16)|0;te=((o(a,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,M)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=((o(a,k)|0)+(F&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,k)|0)+(F>>>16)|0)+(ie>>>16)|0;te=((o(a,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,B)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(a,S)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,S)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(a,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,O)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(a,E)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,E)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(a,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,P)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(a,A)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,A)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(a,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,I)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(a,T)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,T)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(a,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,N)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(a,C)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(p,C)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(a,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(p,D)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;W=ie;X=((o(s,x)|0)+(U&0xffff)|0)+(G&0xffff)|0;ee=((o(m,x)|0)+(U>>>16)|0)+(G>>>16)|0;te=((o(s,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,j)|0)+(ee>>>16)|0)+(te>>>16)|0;U=te<<16|X&0xffff;X=((o(s,_)|0)+(F&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,_)|0)+(F>>>16)|0)+(ie>>>16)|0;te=((o(s,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,M)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(s,k)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,k)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(s,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,B)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(s,S)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,S)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(s,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,O)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(s,E)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,E)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(s,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,P)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(s,A)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,A)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(s,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,I)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(s,T)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,T)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(s,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,N)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(s,C)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(m,C)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(s,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(m,D)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;G=ie;X=((o(c,x)|0)+(F&0xffff)|0)+($&0xffff)|0;ee=((o(y,x)|0)+(F>>>16)|0)+($>>>16)|0;te=((o(c,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,j)|0)+(ee>>>16)|0)+(te>>>16)|0;F=te<<16|X&0xffff;X=((o(c,_)|0)+(z&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,_)|0)+(z>>>16)|0)+(ie>>>16)|0;te=((o(c,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,M)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(c,k)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,k)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(c,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,B)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(c,S)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,S)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(c,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,O)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(c,E)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,E)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(c,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,P)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(c,A)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,A)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(c,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,I)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(c,T)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,T)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(c,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,N)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;X=((o(c,C)|0)+(G&0xffff)|0)+(ie&0xffff)|0;ee=((o(y,C)|0)+(G>>>16)|0)+(ie>>>16)|0;te=((o(c,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(y,D)|0)+(ee>>>16)|0)+(te>>>16)|0;G=te<<16|X&0xffff;$=ie;X=((o(u,x)|0)+(z&0xffff)|0)+(J&0xffff)|0;ee=((o(g,x)|0)+(z>>>16)|0)+(J>>>16)|0;te=((o(u,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,j)|0)+(ee>>>16)|0)+(te>>>16)|0;z=te<<16|X&0xffff;X=((o(u,_)|0)+(q&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,_)|0)+(q>>>16)|0)+(ie>>>16)|0;te=((o(u,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,M)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(u,k)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,k)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(u,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,B)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(u,S)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,S)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(u,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,O)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(u,E)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,E)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(u,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,P)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(u,A)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,A)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(u,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,I)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;X=((o(u,T)|0)+(G&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,T)|0)+(G>>>16)|0)+(ie>>>16)|0;te=((o(u,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,N)|0)+(ee>>>16)|0)+(te>>>16)|0;G=te<<16|X&0xffff;X=((o(u,C)|0)+($&0xffff)|0)+(ie&0xffff)|0;ee=((o(g,C)|0)+($>>>16)|0)+(ie>>>16)|0;te=((o(u,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(g,D)|0)+(ee>>>16)|0)+(te>>>16)|0;$=te<<16|X&0xffff;J=ie;X=((o(f,x)|0)+(q&0xffff)|0)+(Q&0xffff)|0;ee=((o(b,x)|0)+(q>>>16)|0)+(Q>>>16)|0;te=((o(f,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,j)|0)+(ee>>>16)|0)+(te>>>16)|0;q=te<<16|X&0xffff;X=((o(f,_)|0)+(H&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,_)|0)+(H>>>16)|0)+(ie>>>16)|0;te=((o(f,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,M)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(f,k)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,k)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(f,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,B)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(f,S)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,S)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(f,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,O)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(f,E)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,E)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(f,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,P)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;X=((o(f,A)|0)+(G&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,A)|0)+(G>>>16)|0)+(ie>>>16)|0;te=((o(f,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,I)|0)+(ee>>>16)|0)+(te>>>16)|0;G=te<<16|X&0xffff;X=((o(f,T)|0)+($&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,T)|0)+($>>>16)|0)+(ie>>>16)|0;te=((o(f,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,N)|0)+(ee>>>16)|0)+(te>>>16)|0;$=te<<16|X&0xffff;X=((o(f,C)|0)+(J&0xffff)|0)+(ie&0xffff)|0;ee=((o(b,C)|0)+(J>>>16)|0)+(ie>>>16)|0;te=((o(f,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(b,D)|0)+(ee>>>16)|0)+(te>>>16)|0;J=te<<16|X&0xffff;Q=ie;X=((o(l,x)|0)+(H&0xffff)|0)+(Y&0xffff)|0;ee=((o(v,x)|0)+(H>>>16)|0)+(Y>>>16)|0;te=((o(l,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,j)|0)+(ee>>>16)|0)+(te>>>16)|0;H=te<<16|X&0xffff;X=((o(l,_)|0)+(K&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,_)|0)+(K>>>16)|0)+(ie>>>16)|0;te=((o(l,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,M)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(l,k)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,k)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(l,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,B)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(l,S)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,S)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(l,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,O)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;X=((o(l,E)|0)+(G&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,E)|0)+(G>>>16)|0)+(ie>>>16)|0;te=((o(l,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,P)|0)+(ee>>>16)|0)+(te>>>16)|0;G=te<<16|X&0xffff;X=((o(l,A)|0)+($&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,A)|0)+($>>>16)|0)+(ie>>>16)|0;te=((o(l,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,I)|0)+(ee>>>16)|0)+(te>>>16)|0;$=te<<16|X&0xffff;X=((o(l,T)|0)+(J&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,T)|0)+(J>>>16)|0)+(ie>>>16)|0;te=((o(l,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,N)|0)+(ee>>>16)|0)+(te>>>16)|0;J=te<<16|X&0xffff;X=((o(l,C)|0)+(Q&0xffff)|0)+(ie&0xffff)|0;ee=((o(v,C)|0)+(Q>>>16)|0)+(ie>>>16)|0;te=((o(l,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(v,D)|0)+(ee>>>16)|0)+(te>>>16)|0;Q=te<<16|X&0xffff;Y=ie;X=((o(h,x)|0)+(K&0xffff)|0)+(Z&0xffff)|0;ee=((o(w,x)|0)+(K>>>16)|0)+(Z>>>16)|0;te=((o(h,j)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,j)|0)+(ee>>>16)|0)+(te>>>16)|0;K=te<<16|X&0xffff;X=((o(h,_)|0)+(V&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,_)|0)+(V>>>16)|0)+(ie>>>16)|0;te=((o(h,M)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,M)|0)+(ee>>>16)|0)+(te>>>16)|0;V=te<<16|X&0xffff;X=((o(h,k)|0)+(W&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,k)|0)+(W>>>16)|0)+(ie>>>16)|0;te=((o(h,B)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,B)|0)+(ee>>>16)|0)+(te>>>16)|0;W=te<<16|X&0xffff;X=((o(h,S)|0)+(G&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,S)|0)+(G>>>16)|0)+(ie>>>16)|0;te=((o(h,O)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,O)|0)+(ee>>>16)|0)+(te>>>16)|0;G=te<<16|X&0xffff;X=((o(h,E)|0)+($&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,E)|0)+($>>>16)|0)+(ie>>>16)|0;te=((o(h,P)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,P)|0)+(ee>>>16)|0)+(te>>>16)|0;$=te<<16|X&0xffff;X=((o(h,A)|0)+(J&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,A)|0)+(J>>>16)|0)+(ie>>>16)|0;te=((o(h,I)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,I)|0)+(ee>>>16)|0)+(te>>>16)|0;J=te<<16|X&0xffff;X=((o(h,T)|0)+(Q&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,T)|0)+(Q>>>16)|0)+(ie>>>16)|0;te=((o(h,N)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,N)|0)+(ee>>>16)|0)+(te>>>16)|0;Q=te<<16|X&0xffff;X=((o(h,C)|0)+(Y&0xffff)|0)+(ie&0xffff)|0;ee=((o(w,C)|0)+(Y>>>16)|0)+(ie>>>16)|0;te=((o(h,D)|0)+(ee&0xffff)|0)+(X>>>16)|0;ie=((o(w,D)|0)+(ee>>>16)|0)+(te>>>16)|0;Y=te<<16|X&0xffff;Z=ie;le=ae+(ue+fe|0)|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((R&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(R>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((L&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(L>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((U&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(U>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((F&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(F>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((z&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(z>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((q&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(q>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((H&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(H>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((K&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(K>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16}le=ae+(ue+fe|0)|0;oe=i[pe+le>>2]|0;X=(((oe&0xffff)+((V&0xffff)<<1)|0)+re|0)+ne|0;te=((oe>>>16)+(V>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((W&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(W>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((G&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(G>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+(($&0xffff)<<1)|0)+re|0;te=((oe>>>16)+($>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((J&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(J>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((Q&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(Q>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((Y&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(Y>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;re=te>>>16;le=le+4|0;oe=i[pe+le>>2]|0;X=((oe&0xffff)+((Z&0xffff)<<1)|0)+re|0;te=((oe>>>16)+(Z>>>16<<1)|0)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;ne=te>>>16}for(le=le+4|0;!!ne&(le|0)>2]|0;X=(oe&0xffff)+ne|0;te=(oe>>>16)+(X>>>16)|0;i[pe+le>>2]=te<<16|X&0xffff;ne=te>>>16}}}}function b(e,t,r,n,a){e=e|0;t=t|0;r=r|0;n=n|0;a=a|0;var s=0,c=0,u=0,f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0;for(k=t-1&-4;(k|0)>=0;k=k-4|0){s=i[e+k>>2]|0;if(s){t=k;break}}for(k=n-1&-4;(k|0)>=0;k=k-4|0){c=i[r+k>>2]|0;if(c){n=k;break}}while((c&0x80000000)==0){c=c<<1;u=u+1|0}l=i[e+t>>2]|0;if(u){f=l>>>(32-u|0);for(k=t-4|0;(k|0)>=0;k=k-4|0){s=i[e+k>>2]|0;i[e+k+4>>2]=l<>>(32-u|0):0);l=s}i[e>>2]=l<>2]|0;for(k=n-4|0;(k|0)>=0;k=k-4|0){c=i[r+k>>2]|0;i[r+k+4>>2]=h<>>(32-u|0);h=c}i[r>>2]=h<>2]|0;d=h>>>16,p=h&0xffff;for(k=t;(k|0)>=(n|0);k=k-4|0){S=k-n|0;l=i[e+k>>2]|0;m=(f>>>0)/(d>>>0)|0,g=(f>>>0)%(d>>>0)|0,v=o(m,p)|0;while((m|0)==0x10000|v>>>0>(g<<16|l>>>16)>>>0){m=m-1|0,g=g+d|0,v=v-p|0;if((g|0)>=0x10000)break}x=0,_=0;for(E=0;(E|0)<=(n|0);E=E+4|0){c=i[r+E>>2]|0;v=(o(m,c&0xffff)|0)+(x>>>16)|0;w=(o(m,c>>>16)|0)+(v>>>16)|0;c=x&0xffff|v<<16;x=w;s=i[e+S+E>>2]|0;v=((s&0xffff)-(c&0xffff)|0)+_|0;w=((s>>>16)-(c>>>16)|0)+(v>>16)|0;i[e+S+E>>2]=w<<16|v&0xffff;_=w>>16}v=((f&0xffff)-(x&0xffff)|0)+_|0;w=((f>>>16)-(x>>>16)|0)+(v>>16)|0;f=w<<16|v&0xffff;_=w>>16;if(_){m=m-1|0;_=0;for(E=0;(E|0)<=(n|0);E=E+4|0){c=i[r+E>>2]|0;s=i[e+S+E>>2]|0;v=(s&0xffff)+_|0;w=(s>>>16)+c+(v>>>16)|0;i[e+S+E>>2]=w<<16|v&0xffff;_=w>>>16}f=f+_|0}l=i[e+k>>2]|0;s=f<<16|l>>>16;y=(s>>>0)/(d>>>0)|0,b=(s>>>0)%(d>>>0)|0,v=o(y,p)|0;while((y|0)==0x10000|v>>>0>(b<<16|l&0xffff)>>>0){y=y-1|0,b=b+d|0,v=v-p|0;if((b|0)>=0x10000)break}x=0,_=0;for(E=0;(E|0)<=(n|0);E=E+4|0){c=i[r+E>>2]|0;v=(o(y,c&0xffff)|0)+(x&0xffff)|0;w=((o(y,c>>>16)|0)+(v>>>16)|0)+(x>>>16)|0;c=v&0xffff|w<<16;x=w>>>16;s=i[e+S+E>>2]|0;v=((s&0xffff)-(c&0xffff)|0)+_|0;w=((s>>>16)-(c>>>16)|0)+(v>>16)|0;_=w>>16;i[e+S+E>>2]=w<<16|v&0xffff}v=((f&0xffff)-(x&0xffff)|0)+_|0;w=((f>>>16)-(x>>>16)|0)+(v>>16)|0;_=w>>16;if(_){y=y-1|0;_=0;for(E=0;(E|0)<=(n|0);E=E+4|0){c=i[r+E>>2]|0;s=i[e+S+E>>2]|0;v=((s&0xffff)+(c&0xffff)|0)+_|0;w=((s>>>16)+(c>>>16)|0)+(v>>>16)|0;_=w>>>16;i[e+S+E>>2]=v&0xffff|w<<16}}i[a+S>>2]=m<<16|y;f=i[e+k>>2]|0}if(u){l=i[e>>2]|0;for(k=4;(k|0)<=(n|0);k=k+4|0){s=i[e+k>>2]|0;i[e+k-4>>2]=s<<(32-u|0)|l>>>u;l=s}i[e+n>>2]=l>>>u}}function v(e,t,r,n,a,l){e=e|0;t=t|0;r=r|0;n=n|0;a=a|0;l=l|0;var d=0,p=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0;d=s(n<<1)|0;f(n<<1,0,d);u(t,e,d);for(E=0;(E|0)<(n|0);E=E+4|0){y=i[d+E>>2]|0,g=y&0xffff,y=y>>>16;v=a>>>16,b=a&0xffff;w=o(g,b)|0,x=((o(g,v)|0)+(o(y,b)|0)|0)+(w>>>16)|0;g=w&0xffff,y=x&0xffff;S=0;for(A=0;(A|0)<(n|0);A=A+4|0){T=E+A|0;v=i[r+A>>2]|0,b=v&0xffff,v=v>>>16;k=i[d+T>>2]|0;w=((o(g,b)|0)+(S&0xffff)|0)+(k&0xffff)|0;x=((o(g,v)|0)+(S>>>16)|0)+(k>>>16)|0;_=((o(y,b)|0)+(x&0xffff)|0)+(w>>>16)|0;S=((o(y,v)|0)+(_>>>16)|0)+(x>>>16)|0;k=_<<16|w&0xffff;i[d+T>>2]=k}T=E+A|0;k=i[d+T>>2]|0;w=((k&0xffff)+(S&0xffff)|0)+p|0;x=((k>>>16)+(S>>>16)|0)+(w>>>16)|0;i[d+T>>2]=x<<16|w&0xffff;p=x>>>16}u(n,d+n|0,l);c(n<<1);if(p|(h(r,n,l,n)|0)<=0){m(l,n,r,n,l,n)|0}}return{sreset:a,salloc:s,sfree:c,z:f,tst:d,neg:l,cmp:h,add:p,sub:m,mul:y,sqr:g,div:b,mredc:v}};function U(e,t){var r=e.sign,n=t.sign;r<0&&(e=e.negate()),n<0&&(t=t.negate());var i=e.compare(t);if(i<0){var o=e;e=t,t=o;var a=r;r=n,n=a}var s,c,u,f=W.ONE,l=W.ZERO,h=t.bitLength,d=W.ZERO,p=W.ONE,m=e.bitLength;for(s=e.divide(t);(c=s.remainder)!==W.ZERO;)u=s.quotient,s=f.subtract(u.multiply(l).clamp(h)).clamp(h),f=l,l=s,s=d.subtract(u.multiply(p).clamp(m)).clamp(m),d=p,p=s,e=t,t=c,s=e.divide(t);if(r<0&&(l=l.negate()),n<0&&(p=p.negate()),i<0){o=l;l=p,p=o}return{gcd:t,x:l,y:p}}function F(r){if(void 0===t)if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(r);else if(self.crypto&&self.crypto.getRandomValues)self.crypto.getRandomValues(r);else{if(!window.msCrypto||!window.msCrypto.getRandomValues)throw new Error("No secure random number generator available.");window.msCrypto.getRandomValues(r)}else{var n=e("crypto").randomBytes(r.length);r.set(n)}}var z,q=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),H={Uint32Array:Uint32Array,Math:Math},K=new Uint32Array(1048576);void 0===H.Math.imul?(H.Math.imul=function(e,t){return e*t|0},z=L(H,null,K.buffer),delete H.Math.imul):z=L(H,null,K.buffer);var V=new Uint32Array(0),W=function(){function e(t){var r=V,n=0,i=0;if(void 0===t);else{for(var o=0;!t[o];o++);if(!(n=8*(t.length-o)))return e.ZERO;r=new Uint32Array(n+31>>5);for(var a=t.length-4;a>=o;a-=4)r[t.length-4-a>>2]=t[a]<<24|t[a+1]<<16|t[a+2]<<8|t[a+3];o-a==3?r[r.length-1]=t[o]:o-a==2?r[r.length-1]=t[o]<<8|t[o+1]:o-a==1&&(r[r.length-1]=t[o]<<16|t[o+1]<<8|t[o+2]),i=1}this.limbs=r,this.bitLength=n,this.sign=i}return e.fromString=function(t){return new e(a(t))},e.fromNumber=function(t){var r,n=V,i=0,o=Math.abs(t);return o>4294967295?((n=new Uint32Array(2))[0]=0|o,n[1]=o/4294967296|0,i=52):o>0?((n=new Uint32Array(1))[0]=o,i=32):(n=V,i=0),r=t<0?-1:1,e.fromConfig({limbs:n,bitLength:i,sign:r})},e.fromArrayBuffer=function(t){return new e(new Uint8Array(t))},e.fromConfig=function(t){var r=new e;return r.limbs=new Uint32Array(t.limbs),r.bitLength=t.bitLength,r.sign=t.sign,r},e.prototype.toString=function(e){e=e||16;var t=this.limbs,r=this.bitLength,n="";if(16!==e)throw new m("bad radix");for(var i=(r+31>>5)-1;i>=0;i--){var o=t[i].toString(16);n+="00000000".substr(o.length),n+=o}return(n=n.replace(/^0+/,"")).length||(n="0"),this.sign<0&&(n="-"+n),n},e.prototype.toBytes=function(){var e=this.bitLength,t=this.limbs;if(0===e)return new Uint8Array(0);for(var r=e+7>>3,n=new Uint8Array(r),i=0;i>2]>>((3&o)<<3)}return n},e.prototype.valueOf=function(){var e=this.limbs,t=this.bitLength,r=this.sign;if(!r)return 0;if(t<=32)return r*(e[0]>>>0);if(t<=52)return r*(4294967296*(e[1]>>>0)+(e[0]>>>0));var n,i,o=0;for(n=e.length-1;n>=0;n--)if(0!==(i=e[n])){for(;0==(i<>>0):r*(1048576*((e[n]<>>32-o:0))>>>0)+((e[n-1]<1?e[n-2]>>>32-o:0))>>>12))*Math.pow(2,32*n-o-52)},e.prototype.clamp=function(t){var r=this.limbs;if(t>=this.bitLength)return this;var n=new e,i=t+31>>5,o=t%32;return n.limbs=new Uint32Array(r.subarray(0,i)),n.bitLength=t,n.sign=this.sign,o&&(n.limbs[i-1]&=-1>>>32-o),n},e.prototype.slice=function(t,r){var n=this.limbs,i=this.bitLength;if(t<0)throw new RangeError("TODO");if(t>=i)return e.ZERO;(void 0===r||r>i-t)&&(r=i-t);var o=new e,a=t>>5,s=t+r+31>>5,c=r+31>>5,u=t%32,f=r%32,l=new Uint32Array(c);if(u){for(var h=0;h>>u|n[a+h+1]<<32-u;l[h]=n[a+h]>>>u}else l.set(n.subarray(a,s));return f&&(l[c-1]&=-1>>>32-f),o.limbs=l,o.bitLength=r,o.sign=this.sign,o},e.prototype.negate=function(){var t=new e;return t.limbs=this.limbs,t.bitLength=this.bitLength,t.sign=-1*this.sign,t},e.prototype.compare=function(e){var t=this.limbs,r=t.length,n=e.limbs,i=n.length;return this.signe.sign?1:(K.set(t,0),K.set(n,r),z.cmp(0,r<<2,r<<2,i<<2)*this.sign)},e.prototype.add=function(t){if(!this.sign)return t;if(!t.sign)return this;var r,n,i,o,a=this.bitLength,s=this.limbs,c=s.length,u=this.sign,f=t.bitLength,l=t.limbs,h=l.length,d=t.sign,p=new e;n=(r=(a>f?a:f)+(u*d>0?1:0))+31>>5,z.sreset();var m=z.salloc(c<<2),y=z.salloc(h<<2),g=z.salloc(n<<2);return z.z(g-m+(n<<2),0,m),K.set(s,m>>2),K.set(l,y>>2),u*d>0?(z.add(m,c<<2,y,h<<2,g,n<<2),i=u):i=u>d?(o=z.sub(m,c<<2,y,h<<2,g,n<<2))?d:u:(o=z.sub(y,h<<2,m,c<<2,g,n<<2))?u:d,o&&z.neg(g,n<<2,g,n<<2),0===z.tst(g,n<<2)?e.ZERO:(p.limbs=new Uint32Array(K.subarray(g>>2,(g>>2)+n)),p.bitLength=r,p.sign=i,p)},e.prototype.subtract=function(e){return this.add(e.negate())},e.prototype.square=function(){if(!this.sign)return e.ZERO;var t,r,n=this.bitLength,i=this.limbs,o=i.length,a=new e;r=(t=n<<1)+31>>5,z.sreset();var s=z.salloc(o<<2),c=z.salloc(r<<2);return z.z(c-s+(r<<2),0,s),K.set(i,s>>2),z.sqr(s,o<<2,c),a.limbs=new Uint32Array(K.subarray(c>>2,(c>>2)+r)),a.bitLength=t,a.sign=1,a},e.prototype.divide=function(t){var r,n,i=this.bitLength,o=this.limbs,a=o.length,s=t.bitLength,c=t.limbs,u=c.length,f=e.ZERO,l=e.ZERO;z.sreset();var h=z.salloc(a<<2),d=z.salloc(u<<2),p=z.salloc(a<<2);return z.z(p-h+(a<<2),0,h),K.set(o,h>>2),K.set(c,d>>2),z.div(h,a<<2,d,u<<2,p),(r=z.tst(p,a<<2)>>2)&&((f=new e).limbs=new Uint32Array(K.subarray(p>>2,(p>>2)+r)),f.bitLength=i>2)&&((l=new e).limbs=new Uint32Array(K.subarray(h>>2,(h>>2)+n)),l.bitLength=s>5,z.sreset();var l=z.salloc(a<<2),h=z.salloc(u<<2),d=z.salloc(n<<2);return z.z(d-l+(n<<2),0,l),K.set(o,l>>2),K.set(c,h>>2),z.mul(l,a<<2,h,u<<2,d,n<<2),f.limbs=new Uint32Array(K.subarray(d>>2,(d>>2)+n)),f.sign=this.sign*t.sign,f.bitLength=r,f},e.prototype.isMillerRabinProbablePrime=function(t){var r=e.fromConfig(this),n=0;for(r.limbs[0]-=1;0===r.limbs[n>>5];)n+=32;for(;0==(r.limbs[n>>5]>>(31&n)&1);)n++;r=r.slice(n);for(var i=new G(this),o=this.subtract(e.ONE),a=e.fromConfig(this),s=this.limbs.length-1;0===a.limbs[s];)s--;for(;--t>=0;){for(F(a.limbs),a.limbs[0]<2&&(a.limbs[0]+=2);a.compare(o)>=0;)a.limbs[s]>>>=1;var c=i.power(a,r);if(0!==c.compare(e.ONE)&&0!==c.compare(o)){for(var u=n;--u>0;){if(0===(c=c.square().divide(i).remainder).compare(e.ONE))return!1;if(0===c.compare(o))break}if(0===u)return!1}}return!0},e.prototype.isProbablePrime=function(e){void 0===e&&(e=80);var t=this.limbs,r=0;if(0==(1&t[0]))return!1;if(e<=1)return!0;var n=0,i=0,o=0;for(r=0;r>>=2;for(var s=t[r];s;)i+=3&s,i-=3&(s>>>=2),s>>>=2;for(var c=t[r];c;)o+=15&c,o-=15&(c>>>=4),c>>>=4}return!!(n%3&&i%5&&o%17)&&(e<=2||this.isMillerRabinProbablePrime(e>>>1))},e.extGCD=U,e.ZERO=e.fromNumber(0),e.ONE=e.fromNumber(1),e}(),G=function(e){function t(t){var r,n=e.call(this)||this;if(n.limbs=t.limbs,n.bitLength=t.bitLength,n.sign=t.sign,n.valueOf()<1)throw new RangeError;if(n.bitLength<=32)return n;if(!(1&n.limbs[0]))return n;var i=1+(n.bitLength+31&-32),o=new Uint32Array(i+31>>5);o[o.length-1]=1,(r=new W).sign=1,r.bitLength=i,r.limbs=o;var a=function(e,t){var r,n,i,o,a=e<0?-1:1,s=t<0?-1:1,c=1,u=0,f=0,l=1;for((o=(e*=a)<(t*=s))&&(i=e,e=t,t=i,i=a,a=s,s=i),r=e-(n=Math.floor(e/t))*t;r;)i=c-n*u,c=u,u=i,i=f-n*l,f=l,l=i,e=t,t=r,r=e-(n=Math.floor(e/t))*t;return u*=a,l*=s,o&&(i=u,u=l,l=i),{gcd:t,x:u,y:l}}(4294967296,n.limbs[0]).y;return n.coefficient=a<0?-a:4294967296-a,n.comodulus=r,n.comodulusRemainder=r.divide(n).remainder,n.comodulusRemainderSquare=r.square().divide(n).remainder,n}return q(t,e),t.prototype.reduce=function(e){return e.bitLength<=32&&this.bitLength<=32?W.fromNumber(e.valueOf()%this.valueOf()):e.compare(this)<0?e:e.divide(this).remainder},t.prototype.inverse=function(e){var t=U(this,e=this.reduce(e));if(1!==t.gcd.valueOf())throw new Error("GCD is not 1");return t.y.sign<0?t.y.add(this).clamp(this.bitLength):t.y},t.prototype.power=function(e,r){for(var n=0,i=0;i>>=1;var a=8;r.bitLength<=4536&&(a=7),r.bitLength<=1736&&(a=6),r.bitLength<=630&&(a=5),r.bitLength<=210&&(a=4),r.bitLength<=60&&(a=3),r.bitLength<=12&&(a=2),n<=1<=0;i--){o=r.limbs[i];for(var l=32;l>0;)if(2147483648&o){for(var h=o>>>32-a,d=a;0==(1&h);)h>>>=1,d--;for(var p=c[h>>>1];h;)h>>>=1,f!==u&&(f=t._Montgomery_reduce(f.square(),this));f=f!==u?t._Montgomery_reduce(f.multiply(p),this):p,o<<=d,l-=d}else f!==u&&(f=t._Montgomery_reduce(f.square(),this)),o<<=1,l--}return t._Montgomery_reduce(f,this)},t._Montgomery_reduce=function(e,t){var r=e.limbs,n=r.length,i=t.limbs,o=i.length,a=t.coefficient;z.sreset();var s=z.salloc(n<<2),c=z.salloc(o<<2),u=z.salloc(o<<2);z.z(u-s+(o<<2),0,s),K.set(r,s>>2),K.set(i,c>>2),z.mredc(s,n<<2,c,o<<2,a,u);var f=new W;return f.limbs=new Uint32Array(K.subarray(u>>2,(u>>2)+o)),f.bitLength=t.bitLength,f.sign=1,f},t}(W),$=function(e,t,r){"use asm";var n=0,i=0,o=0,a=0,s=0,c=0,u=0;var f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0;var w=new e.Uint8Array(r);function x(e,t,r,c,u,f,l,h,d,p,m,y,g,b,v,w){e=e|0;t=t|0;r=r|0;c=c|0;u=u|0;f=f|0;l=l|0;h=h|0;d=d|0;p=p|0;m=m|0;y=y|0;g=g|0;b=b|0;v=v|0;w=w|0;var x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0,D=0,R=0,L=0,U=0,F=0,z=0,q=0,H=0,K=0,V=0,W=0,G=0,$=0,J=0,Q=0,Y=0,Z=0,X=0,ee=0,te=0,re=0,ne=0,ie=0,oe=0,ae=0,se=0,ce=0,ue=0,fe=0,le=0,he=0,de=0,pe=0,me=0,ye=0,ge=0,be=0,ve=0,we=0,xe=0,_e=0,ke=0,Se=0,Ee=0,Ae=0,Te=0,Ce=0,je=0,Me=0,Be=0,Oe=0,Pe=0,Ie=0,Ne=0,De=0,Re=0;x=n;_=i;k=o;S=a;E=s;T=e+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=t+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=r+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=c+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=u+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=f+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=l+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=h+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=d+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=p+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=m+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=y+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=g+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=b+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=v+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;T=w+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=b^d^r^e;C=A<<1|A>>>31;T=C+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=v^p^c^t;j=A<<1|A>>>31;T=j+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=w^m^u^r;M=A<<1|A>>>31;T=M+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=C^y^f^c;B=A<<1|A>>>31;T=B+(x<<5|x>>>27)+E+(_&k|~_&S)+0x5a827999|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=j^g^l^u;O=A<<1|A>>>31;T=O+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=M^b^h^f;P=A<<1|A>>>31;T=P+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=B^v^d^l;I=A<<1|A>>>31;T=I+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=O^w^p^h;N=A<<1|A>>>31;T=N+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=P^C^m^d;D=A<<1|A>>>31;T=D+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=I^j^y^p;R=A<<1|A>>>31;T=R+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=N^M^g^m;L=A<<1|A>>>31;T=L+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=D^B^b^y;U=A<<1|A>>>31;T=U+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=R^O^v^g;F=A<<1|A>>>31;T=F+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=L^P^w^b;z=A<<1|A>>>31;T=z+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=U^I^C^v;q=A<<1|A>>>31;T=q+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=F^N^j^w;H=A<<1|A>>>31;T=H+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=z^D^M^C;K=A<<1|A>>>31;T=K+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=q^R^B^j;V=A<<1|A>>>31;T=V+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=H^L^O^M;W=A<<1|A>>>31;T=W+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=K^U^P^B;G=A<<1|A>>>31;T=G+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=V^F^I^O;$=A<<1|A>>>31;T=$+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=W^z^N^P;J=A<<1|A>>>31;T=J+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=G^q^D^I;Q=A<<1|A>>>31;T=Q+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=$^H^R^N;Y=A<<1|A>>>31;T=Y+(x<<5|x>>>27)+E+(_^k^S)+0x6ed9eba1|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=J^K^L^D;Z=A<<1|A>>>31;T=Z+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Q^V^U^R;X=A<<1|A>>>31;T=X+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Y^W^F^L;ee=A<<1|A>>>31;T=ee+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Z^G^z^U;te=A<<1|A>>>31;T=te+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=X^$^q^F;re=A<<1|A>>>31;T=re+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ee^J^H^z;ne=A<<1|A>>>31;T=ne+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=te^Q^K^q;ie=A<<1|A>>>31;T=ie+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=re^Y^V^H;oe=A<<1|A>>>31;T=oe+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ne^Z^W^K;ae=A<<1|A>>>31;T=ae+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ie^X^G^V;se=A<<1|A>>>31;T=se+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=oe^ee^$^W;ce=A<<1|A>>>31;T=ce+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ae^te^J^G;ue=A<<1|A>>>31;T=ue+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=se^re^Q^$;fe=A<<1|A>>>31;T=fe+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ce^ne^Y^J;le=A<<1|A>>>31;T=le+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ue^ie^Z^Q;he=A<<1|A>>>31;T=he+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=fe^oe^X^Y;de=A<<1|A>>>31;T=de+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=le^ae^ee^Z;pe=A<<1|A>>>31;T=pe+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=he^se^te^X;me=A<<1|A>>>31;T=me+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=de^ce^re^ee;ye=A<<1|A>>>31;T=ye+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=pe^ue^ne^te;ge=A<<1|A>>>31;T=ge+(x<<5|x>>>27)+E+(_&k|_&S|k&S)-0x70e44324|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=me^fe^ie^re;be=A<<1|A>>>31;T=be+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ye^le^oe^ne;ve=A<<1|A>>>31;T=ve+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ge^he^ae^ie;we=A<<1|A>>>31;T=we+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=be^de^se^oe;xe=A<<1|A>>>31;T=xe+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ve^pe^ce^ae;_e=A<<1|A>>>31;T=_e+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=we^me^ue^se;ke=A<<1|A>>>31;T=ke+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=xe^ye^fe^ce;Se=A<<1|A>>>31;T=Se+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=_e^ge^le^ue;Ee=A<<1|A>>>31;T=Ee+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=ke^be^he^fe;Ae=A<<1|A>>>31;T=Ae+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Se^ve^de^le;Te=A<<1|A>>>31;T=Te+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Ee^we^pe^he;Ce=A<<1|A>>>31;T=Ce+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Ae^xe^me^de;je=A<<1|A>>>31;T=je+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Te^_e^ye^pe;Me=A<<1|A>>>31;T=Me+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Ce^ke^ge^me;Be=A<<1|A>>>31;T=Be+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=je^Se^be^ye;Oe=A<<1|A>>>31;T=Oe+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Me^Ee^ve^ge;Pe=A<<1|A>>>31;T=Pe+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Be^Ae^we^be;Ie=A<<1|A>>>31;T=Ie+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Oe^Te^xe^ve;Ne=A<<1|A>>>31;T=Ne+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Pe^Ce^_e^we;De=A<<1|A>>>31;T=De+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;A=Ie^je^ke^xe;Re=A<<1|A>>>31;T=Re+(x<<5|x>>>27)+E+(_^k^S)-0x359d3e2a|0;E=S;S=k;k=_<<30|_>>>2;_=x;x=T;n=n+x|0;i=i+_|0;o=o+k|0;a=a+S|0;s=s+E|0}function _(e){e=e|0;x(w[e|0]<<24|w[e|1]<<16|w[e|2]<<8|w[e|3],w[e|4]<<24|w[e|5]<<16|w[e|6]<<8|w[e|7],w[e|8]<<24|w[e|9]<<16|w[e|10]<<8|w[e|11],w[e|12]<<24|w[e|13]<<16|w[e|14]<<8|w[e|15],w[e|16]<<24|w[e|17]<<16|w[e|18]<<8|w[e|19],w[e|20]<<24|w[e|21]<<16|w[e|22]<<8|w[e|23],w[e|24]<<24|w[e|25]<<16|w[e|26]<<8|w[e|27],w[e|28]<<24|w[e|29]<<16|w[e|30]<<8|w[e|31],w[e|32]<<24|w[e|33]<<16|w[e|34]<<8|w[e|35],w[e|36]<<24|w[e|37]<<16|w[e|38]<<8|w[e|39],w[e|40]<<24|w[e|41]<<16|w[e|42]<<8|w[e|43],w[e|44]<<24|w[e|45]<<16|w[e|46]<<8|w[e|47],w[e|48]<<24|w[e|49]<<16|w[e|50]<<8|w[e|51],w[e|52]<<24|w[e|53]<<16|w[e|54]<<8|w[e|55],w[e|56]<<24|w[e|57]<<16|w[e|58]<<8|w[e|59],w[e|60]<<24|w[e|61]<<16|w[e|62]<<8|w[e|63])}function k(e){e=e|0;w[e|0]=n>>>24;w[e|1]=n>>>16&255;w[e|2]=n>>>8&255;w[e|3]=n&255;w[e|4]=i>>>24;w[e|5]=i>>>16&255;w[e|6]=i>>>8&255;w[e|7]=i&255;w[e|8]=o>>>24;w[e|9]=o>>>16&255;w[e|10]=o>>>8&255;w[e|11]=o&255;w[e|12]=a>>>24;w[e|13]=a>>>16&255;w[e|14]=a>>>8&255;w[e|15]=a&255;w[e|16]=s>>>24;w[e|17]=s>>>16&255;w[e|18]=s>>>8&255;w[e|19]=s&255}function S(){n=0x67452301;i=0xefcdab89;o=0x98badcfe;a=0x10325476;s=0xc3d2e1f0;c=u=0}function E(e,t,r,f,l,h,d){e=e|0;t=t|0;r=r|0;f=f|0;l=l|0;h=h|0;d=d|0;n=e;i=t;o=r;a=f;s=l;c=h;u=d}function A(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){_(e);e=e+64|0;t=t-64|0;r=r+64|0}c=c+r|0;if(c>>>0>>0)u=u+1|0;return r|0}function T(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,i=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){n=A(e,t)|0;if((n|0)==-1)return-1;e=e+n|0;t=t-n|0}n=n+t|0;c=c+t|0;if(c>>>0>>0)u=u+1|0;w[e|t]=0x80;if((t|0)>=56){for(i=t+1|0;(i|0)<64;i=i+1|0)w[e|i]=0x00;_(e);t=0;w[e|0]=0}for(i=t+1|0;(i|0)<59;i=i+1|0)w[e|i]=0;w[e|56]=u>>>21&255;w[e|57]=u>>>13&255;w[e|58]=u>>>5&255;w[e|59]=u<<3&255|c>>>29;w[e|60]=c>>>21&255;w[e|61]=c>>>13&255;w[e|62]=c>>>5&255;w[e|63]=c<<3&255;_(e);if(~r)k(r);return n|0}function C(){n=f;i=l;o=h;a=d;s=p;c=64;u=0}function j(){n=m;i=y;o=g;a=b;s=v;c=64;u=0}function M(e,t,r,w,_,k,E,A,T,C,j,M,B,O,P,I){e=e|0;t=t|0;r=r|0;w=w|0;_=_|0;k=k|0;E=E|0;A=A|0;T=T|0;C=C|0;j=j|0;M=M|0;B=B|0;O=O|0;P=P|0;I=I|0;S();x(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,w^0x5c5c5c5c,_^0x5c5c5c5c,k^0x5c5c5c5c,E^0x5c5c5c5c,A^0x5c5c5c5c,T^0x5c5c5c5c,C^0x5c5c5c5c,j^0x5c5c5c5c,M^0x5c5c5c5c,B^0x5c5c5c5c,O^0x5c5c5c5c,P^0x5c5c5c5c,I^0x5c5c5c5c);m=n;y=i;g=o;b=a;v=s;S();x(e^0x36363636,t^0x36363636,r^0x36363636,w^0x36363636,_^0x36363636,k^0x36363636,E^0x36363636,A^0x36363636,T^0x36363636,C^0x36363636,j^0x36363636,M^0x36363636,B^0x36363636,O^0x36363636,P^0x36363636,I^0x36363636);f=n;l=i;h=o;d=a;p=s;c=64;u=0}function B(e,t,r){e=e|0;t=t|0;r=r|0;var c=0,u=0,f=0,l=0,h=0,d=0;if(e&63)return-1;if(~r)if(r&31)return-1;d=T(e,t,-1)|0;c=n,u=i,f=o,l=a,h=s;j();x(c,u,f,l,h,0x80000000,0,0,0,0,0,0,0,0,0,672);if(~r)k(r);return d|0}function O(e,t,r,c,u){e=e|0;t=t|0;r=r|0;c=c|0;u=u|0;var f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0;if(e&63)return-1;if(~u)if(u&31)return-1;w[e+t|0]=r>>>24;w[e+t+1|0]=r>>>16&255;w[e+t+2|0]=r>>>8&255;w[e+t+3|0]=r&255;B(e,t+4|0,-1)|0;f=m=n,l=y=i,h=g=o,d=b=a,p=v=s;c=c-1|0;while((c|0)>0){C();x(m,y,g,b,v,0x80000000,0,0,0,0,0,0,0,0,0,672);m=n,y=i,g=o,b=a,v=s;j();x(m,y,g,b,v,0x80000000,0,0,0,0,0,0,0,0,0,672);m=n,y=i,g=o,b=a,v=s;f=f^n;l=l^i;h=h^o;d=d^a;p=p^s;c=c-1|0}n=f;i=l;o=h;a=d;s=p;if(~u)k(u);return 0}return{reset:S,init:E,process:A,finish:T,hmac_reset:C,hmac_init:M,hmac_finish:B,pbkdf2_generate_block:O}},J=function(){function e(){this.pos=0,this.len=0}return e.prototype.reset=function(){return this.result=null,this.pos=0,this.len=0,this.asm.reset(),this},e.prototype.process=function(e){if(null!==this.result)throw new p("state must be reset before processing new data");for(var t=this.asm,r=this.heap,n=this.pos,i=this.len,o=0,a=e.length,s=0;a>0;)i+=s=f(r,n+i,e,o,a),o+=s,a-=s,n+=s=t.process(n,i),(i-=s)||(n=0);return this.pos=n,this.len=i,this},e.prototype.finish=function(){if(null!==this.result)throw new p("state must be reset before processing new data");return this.asm.finish(this.pos,this.len,0),this.result=new Uint8Array(this.HASH_SIZE),this.result.set(this.heap.subarray(0,this.HASH_SIZE)),this.pos=0,this.len=0,this},e}(),Q=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Y=64,Z=20,X=function(e){function t(){var t=e.call(this)||this;return t.NAME="sha1",t.BLOCK_SIZE=Y,t.HASH_SIZE=Z,t.heap=u(),t.asm=$({Uint8Array:Uint8Array},null,t.heap.buffer),t.reset(),t}return Q(t,e),t.NAME="sha1",t}(J),ee=function(e,t,r){"use asm";var n=0,i=0,o=0,a=0,s=0,c=0,u=0,f=0,l=0,h=0;var d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0;var j=new e.Uint8Array(r);function M(e,t,r,l,h,d,p,m,y,g,b,v,w,x,_,k){e=e|0;t=t|0;r=r|0;l=l|0;h=h|0;d=d|0;p=p|0;m=m|0;y=y|0;g=g|0;b=b|0;v=v|0;w=w|0;x=x|0;_=_|0;k=k|0;var S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0;S=n;E=i;A=o;T=a;C=s;j=c;M=u;B=f;B=e+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0x428a2f98|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;M=t+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0x71374491|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;j=r+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0xb5c0fbcf|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;C=l+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0xe9b5dba5|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;T=h+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x3956c25b|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;A=d+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0x59f111f1|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;E=p+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x923f82a4|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;S=m+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0xab1c5ed5|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;B=y+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0xd807aa98|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;M=g+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0x12835b01|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;j=b+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0x243185be|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;C=v+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0x550c7dc3|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;T=w+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x72be5d74|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;A=x+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0x80deb1fe|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;E=_+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x9bdc06a7|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;S=k+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0xc19bf174|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+e+g|0;B=e+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0xe49b69c1|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+t+b|0;M=t+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0xefbe4786|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;r=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+v|0;j=r+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0x0fc19dc6|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+w|0;C=l+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0x240ca1cc|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;h=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+h+x|0;T=h+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x2de92c6f|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+d+_|0;A=d+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0x4a7484aa|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;p=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+p+k|0;E=p+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x5cb0a9dc|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+m+e|0;S=m+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0x76f988da|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;y=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;B=y+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0x983e5152|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;g=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+r|0;M=g+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0xa831c66d|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;b=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+b+l|0;j=b+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0xb00327c8|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;v=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+h|0;C=v+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0xbf597fc7|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;w=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+w+d|0;T=w+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0xc6e00bf3|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;x=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+x+p|0;A=x+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0xd5a79147|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+m|0;E=_+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x06ca6351|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;k=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+k+y|0;S=k+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0x14292967|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+e+g|0;B=e+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0x27b70a85|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+t+b|0;M=t+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0x2e1b2138|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;r=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+v|0;j=r+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0x4d2c6dfc|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+w|0;C=l+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0x53380d13|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;h=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+h+x|0;T=h+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x650a7354|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+d+_|0;A=d+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0x766a0abb|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;p=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+p+k|0;E=p+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x81c2c92e|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+m+e|0;S=m+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0x92722c85|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;y=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;B=y+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0xa2bfe8a1|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;g=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+r|0;M=g+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0xa81a664b|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;b=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+b+l|0;j=b+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0xc24b8b70|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;v=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+h|0;C=v+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0xc76c51a3|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;w=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+w+d|0;T=w+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0xd192e819|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;x=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+x+p|0;A=x+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0xd6990624|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+m|0;E=_+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0xf40e3585|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;k=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+k+y|0;S=k+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0x106aa070|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;e=(t>>>7^t>>>18^t>>>3^t<<25^t<<14)+(_>>>17^_>>>19^_>>>10^_<<15^_<<13)+e+g|0;B=e+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0x19a4c116|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;t=(r>>>7^r>>>18^r>>>3^r<<25^r<<14)+(k>>>17^k>>>19^k>>>10^k<<15^k<<13)+t+b|0;M=t+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0x1e376c08|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;r=(l>>>7^l>>>18^l>>>3^l<<25^l<<14)+(e>>>17^e>>>19^e>>>10^e<<15^e<<13)+r+v|0;j=r+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0x2748774c|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;l=(h>>>7^h>>>18^h>>>3^h<<25^h<<14)+(t>>>17^t>>>19^t>>>10^t<<15^t<<13)+l+w|0;C=l+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0x34b0bcb5|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;h=(d>>>7^d>>>18^d>>>3^d<<25^d<<14)+(r>>>17^r>>>19^r>>>10^r<<15^r<<13)+h+x|0;T=h+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x391c0cb3|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;d=(p>>>7^p>>>18^p>>>3^p<<25^p<<14)+(l>>>17^l>>>19^l>>>10^l<<15^l<<13)+d+_|0;A=d+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0x4ed8aa4a|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;p=(m>>>7^m>>>18^m>>>3^m<<25^m<<14)+(h>>>17^h>>>19^h>>>10^h<<15^h<<13)+p+k|0;E=p+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0x5b9cca4f|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;m=(y>>>7^y>>>18^y>>>3^y<<25^y<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+m+e|0;S=m+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0x682e6ff3|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;y=(g>>>7^g>>>18^g>>>3^g<<25^g<<14)+(p>>>17^p>>>19^p>>>10^p<<15^p<<13)+y+t|0;B=y+B+(C>>>6^C>>>11^C>>>25^C<<26^C<<21^C<<7)+(M^C&(j^M))+0x748f82ee|0;T=T+B|0;B=B+(S&E^A&(S^E))+(S>>>2^S>>>13^S>>>22^S<<30^S<<19^S<<10)|0;g=(b>>>7^b>>>18^b>>>3^b<<25^b<<14)+(m>>>17^m>>>19^m>>>10^m<<15^m<<13)+g+r|0;M=g+M+(T>>>6^T>>>11^T>>>25^T<<26^T<<21^T<<7)+(j^T&(C^j))+0x78a5636f|0;A=A+M|0;M=M+(B&S^E&(B^S))+(B>>>2^B>>>13^B>>>22^B<<30^B<<19^B<<10)|0;b=(v>>>7^v>>>18^v>>>3^v<<25^v<<14)+(y>>>17^y>>>19^y>>>10^y<<15^y<<13)+b+l|0;j=b+j+(A>>>6^A>>>11^A>>>25^A<<26^A<<21^A<<7)+(C^A&(T^C))+0x84c87814|0;E=E+j|0;j=j+(M&B^S&(M^B))+(M>>>2^M>>>13^M>>>22^M<<30^M<<19^M<<10)|0;v=(w>>>7^w>>>18^w>>>3^w<<25^w<<14)+(g>>>17^g>>>19^g>>>10^g<<15^g<<13)+v+h|0;C=v+C+(E>>>6^E>>>11^E>>>25^E<<26^E<<21^E<<7)+(T^E&(A^T))+0x8cc70208|0;S=S+C|0;C=C+(j&M^B&(j^M))+(j>>>2^j>>>13^j>>>22^j<<30^j<<19^j<<10)|0;w=(x>>>7^x>>>18^x>>>3^x<<25^x<<14)+(b>>>17^b>>>19^b>>>10^b<<15^b<<13)+w+d|0;T=w+T+(S>>>6^S>>>11^S>>>25^S<<26^S<<21^S<<7)+(A^S&(E^A))+0x90befffa|0;B=B+T|0;T=T+(C&j^M&(C^j))+(C>>>2^C>>>13^C>>>22^C<<30^C<<19^C<<10)|0;x=(_>>>7^_>>>18^_>>>3^_<<25^_<<14)+(v>>>17^v>>>19^v>>>10^v<<15^v<<13)+x+p|0;A=x+A+(B>>>6^B>>>11^B>>>25^B<<26^B<<21^B<<7)+(E^B&(S^E))+0xa4506ceb|0;M=M+A|0;A=A+(T&C^j&(T^C))+(T>>>2^T>>>13^T>>>22^T<<30^T<<19^T<<10)|0;_=(k>>>7^k>>>18^k>>>3^k<<25^k<<14)+(w>>>17^w>>>19^w>>>10^w<<15^w<<13)+_+m|0;E=_+E+(M>>>6^M>>>11^M>>>25^M<<26^M<<21^M<<7)+(S^M&(B^S))+0xbef9a3f7|0;j=j+E|0;E=E+(A&T^C&(A^T))+(A>>>2^A>>>13^A>>>22^A<<30^A<<19^A<<10)|0;k=(e>>>7^e>>>18^e>>>3^e<<25^e<<14)+(x>>>17^x>>>19^x>>>10^x<<15^x<<13)+k+y|0;S=k+S+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(B^j&(M^B))+0xc67178f2|0;C=C+S|0;S=S+(E&A^T&(E^A))+(E>>>2^E>>>13^E>>>22^E<<30^E<<19^E<<10)|0;n=n+S|0;i=i+E|0;o=o+A|0;a=a+T|0;s=s+C|0;c=c+j|0;u=u+M|0;f=f+B|0}function B(e){e=e|0;M(j[e|0]<<24|j[e|1]<<16|j[e|2]<<8|j[e|3],j[e|4]<<24|j[e|5]<<16|j[e|6]<<8|j[e|7],j[e|8]<<24|j[e|9]<<16|j[e|10]<<8|j[e|11],j[e|12]<<24|j[e|13]<<16|j[e|14]<<8|j[e|15],j[e|16]<<24|j[e|17]<<16|j[e|18]<<8|j[e|19],j[e|20]<<24|j[e|21]<<16|j[e|22]<<8|j[e|23],j[e|24]<<24|j[e|25]<<16|j[e|26]<<8|j[e|27],j[e|28]<<24|j[e|29]<<16|j[e|30]<<8|j[e|31],j[e|32]<<24|j[e|33]<<16|j[e|34]<<8|j[e|35],j[e|36]<<24|j[e|37]<<16|j[e|38]<<8|j[e|39],j[e|40]<<24|j[e|41]<<16|j[e|42]<<8|j[e|43],j[e|44]<<24|j[e|45]<<16|j[e|46]<<8|j[e|47],j[e|48]<<24|j[e|49]<<16|j[e|50]<<8|j[e|51],j[e|52]<<24|j[e|53]<<16|j[e|54]<<8|j[e|55],j[e|56]<<24|j[e|57]<<16|j[e|58]<<8|j[e|59],j[e|60]<<24|j[e|61]<<16|j[e|62]<<8|j[e|63])}function O(e){e=e|0;j[e|0]=n>>>24;j[e|1]=n>>>16&255;j[e|2]=n>>>8&255;j[e|3]=n&255;j[e|4]=i>>>24;j[e|5]=i>>>16&255;j[e|6]=i>>>8&255;j[e|7]=i&255;j[e|8]=o>>>24;j[e|9]=o>>>16&255;j[e|10]=o>>>8&255;j[e|11]=o&255;j[e|12]=a>>>24;j[e|13]=a>>>16&255;j[e|14]=a>>>8&255;j[e|15]=a&255;j[e|16]=s>>>24;j[e|17]=s>>>16&255;j[e|18]=s>>>8&255;j[e|19]=s&255;j[e|20]=c>>>24;j[e|21]=c>>>16&255;j[e|22]=c>>>8&255;j[e|23]=c&255;j[e|24]=u>>>24;j[e|25]=u>>>16&255;j[e|26]=u>>>8&255;j[e|27]=u&255;j[e|28]=f>>>24;j[e|29]=f>>>16&255;j[e|30]=f>>>8&255;j[e|31]=f&255}function P(){n=0x6a09e667;i=0xbb67ae85;o=0x3c6ef372;a=0xa54ff53a;s=0x510e527f;c=0x9b05688c;u=0x1f83d9ab;f=0x5be0cd19;l=h=0}function I(e,t,r,d,p,m,y,g,b,v){e=e|0;t=t|0;r=r|0;d=d|0;p=p|0;m=m|0;y=y|0;g=g|0;b=b|0;v=v|0;n=e;i=t;o=r;a=d;s=p;c=m;u=y;f=g;l=b;h=v}function N(e,t){e=e|0;t=t|0;var r=0;if(e&63)return-1;while((t|0)>=64){B(e);e=e+64|0;t=t-64|0;r=r+64|0}l=l+r|0;if(l>>>0>>0)h=h+1|0;return r|0}function D(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,i=0;if(e&63)return-1;if(~r)if(r&31)return-1;if((t|0)>=64){n=N(e,t)|0;if((n|0)==-1)return-1;e=e+n|0;t=t-n|0}n=n+t|0;l=l+t|0;if(l>>>0>>0)h=h+1|0;j[e|t]=0x80;if((t|0)>=56){for(i=t+1|0;(i|0)<64;i=i+1|0)j[e|i]=0x00;B(e);t=0;j[e|0]=0}for(i=t+1|0;(i|0)<59;i=i+1|0)j[e|i]=0;j[e|56]=h>>>21&255;j[e|57]=h>>>13&255;j[e|58]=h>>>5&255;j[e|59]=h<<3&255|l>>>29;j[e|60]=l>>>21&255;j[e|61]=l>>>13&255;j[e|62]=l>>>5&255;j[e|63]=l<<3&255;B(e);if(~r)O(r);return n|0}function R(){n=d;i=p;o=m;a=y;s=g;c=b;u=v;f=w;l=64;h=0}function L(){n=x;i=_;o=k;a=S;s=E;c=A;u=T;f=C;l=64;h=0}function U(e,t,r,j,B,O,I,N,D,R,L,U,F,z,q,H){e=e|0;t=t|0;r=r|0;j=j|0;B=B|0;O=O|0;I=I|0;N=N|0;D=D|0;R=R|0;L=L|0;U=U|0;F=F|0;z=z|0;q=q|0;H=H|0;P();M(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,j^0x5c5c5c5c,B^0x5c5c5c5c,O^0x5c5c5c5c,I^0x5c5c5c5c,N^0x5c5c5c5c,D^0x5c5c5c5c,R^0x5c5c5c5c,L^0x5c5c5c5c,U^0x5c5c5c5c,F^0x5c5c5c5c,z^0x5c5c5c5c,q^0x5c5c5c5c,H^0x5c5c5c5c);x=n;_=i;k=o;S=a;E=s;A=c;T=u;C=f;P();M(e^0x36363636,t^0x36363636,r^0x36363636,j^0x36363636,B^0x36363636,O^0x36363636,I^0x36363636,N^0x36363636,D^0x36363636,R^0x36363636,L^0x36363636,U^0x36363636,F^0x36363636,z^0x36363636,q^0x36363636,H^0x36363636);d=n;p=i;m=o;y=a;g=s;b=c;v=u;w=f;l=64;h=0}function F(e,t,r){e=e|0;t=t|0;r=r|0;var l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0;if(e&63)return-1;if(~r)if(r&31)return-1;v=D(e,t,-1)|0;l=n,h=i,d=o,p=a,m=s,y=c,g=u,b=f;L();M(l,h,d,p,m,y,g,b,0x80000000,0,0,0,0,0,0,768);if(~r)O(r);return v|0}function z(e,t,r,l,h){e=e|0;t=t|0;r=r|0;l=l|0;h=h|0;var d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0;if(e&63)return-1;if(~h)if(h&31)return-1;j[e+t|0]=r>>>24;j[e+t+1|0]=r>>>16&255;j[e+t+2|0]=r>>>8&255;j[e+t+3|0]=r&255;F(e,t+4|0,-1)|0;d=x=n,p=_=i,m=k=o,y=S=a,g=E=s,b=A=c,v=T=u,w=C=f;l=l-1|0;while((l|0)>0){R();M(x,_,k,S,E,A,T,C,0x80000000,0,0,0,0,0,0,768);x=n,_=i,k=o,S=a,E=s,A=c,T=u,C=f;L();M(x,_,k,S,E,A,T,C,0x80000000,0,0,0,0,0,0,768);x=n,_=i,k=o,S=a,E=s,A=c,T=u,C=f;d=d^n;p=p^i;m=m^o;y=y^a;g=g^s;b=b^c;v=v^u;w=w^f;l=l-1|0}n=d;i=p;o=m;a=y;s=g;c=b;u=v;f=w;if(~h)O(h);return 0}return{reset:P,init:I,process:N,finish:D,hmac_reset:R,hmac_init:U,hmac_finish:F,pbkdf2_generate_block:z}},te=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),re=64,ne=32,ie=function(e){function t(){var t=e.call(this)||this;return t.NAME="sha256",t.BLOCK_SIZE=re,t.HASH_SIZE=ne,t.heap=u(),t.asm=ee({Uint8Array:Uint8Array},null,t.heap.buffer),t.reset(),t}return te(t,e),t.NAME="sha256",t}(J),oe=function(e,t,r){"use asm";var n=0,i=0,o=0,a=0,s=0,c=0,u=0,f=0,l=0,h=0,d=0,p=0,m=0,y=0,g=0,b=0,v=0,w=0;var x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0,D=0,R=0,L=0,U=0,F=0,z=0,q=0,H=0,K=0,V=0,W=0,G=0,$=0,J=0,Q=0,Y=0,Z=0;var X=new e.Uint8Array(r);function ee(e,t,r,v,w,x,_,k,S,E,A,T,C,j,M,B,O,P,I,N,D,R,L,U,F,z,q,H,K,V,W,G){e=e|0;t=t|0;r=r|0;v=v|0;w=w|0;x=x|0;_=_|0;k=k|0;S=S|0;E=E|0;A=A|0;T=T|0;C=C|0;j=j|0;M=M|0;B=B|0;O=O|0;P=P|0;I=I|0;N=N|0;D=D|0;R=R|0;L=L|0;U=U|0;F=F|0;z=z|0;q=q|0;H=H|0;K=K|0;V=V|0;W=W|0;G=G|0;var $=0,J=0,Q=0,Y=0,Z=0,X=0,ee=0,te=0,re=0,ne=0,ie=0,oe=0,ae=0,se=0,ce=0,ue=0,fe=0,le=0,he=0;$=n;J=i;Q=o;Y=a;Z=s;X=c;ee=u;te=f;re=l;ne=h;ie=d;oe=p;ae=m;se=y;ce=g;ue=b;le=0xd728ae22+t|0;fe=0x428a2f98+e+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x23ef65cd+v|0;fe=0x71374491+r+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xec4d3b2f+x|0;fe=0xb5c0fbcf+w+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x8189dbbc+k|0;fe=0xe9b5dba5+_+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xf348b538+E|0;fe=0x3956c25b+S+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xb605d019+T|0;fe=0x59f111f1+A+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xaf194f9b+j|0;fe=0x923f82a4+C+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xda6d8118+B|0;fe=0xab1c5ed5+M+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xa3030242+P|0;fe=0xd807aa98+O+(le>>>0

>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x45706fbe+N|0;fe=0x12835b01+I+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x4ee4b28c+R|0;fe=0x243185be+D+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xd5ffb4e2+U|0;fe=0x550c7dc3+L+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xf27b896f+z|0;fe=0x72be5d74+F+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x3b1696b1+H|0;fe=0x80deb1fe+q+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0x25c71235+V|0;fe=0x9bdc06a7+K+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;le=0xcf692694+G|0;fe=0xc19bf174+W+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;t=t+N|0;e=e+I+(t>>>0>>0?1:0)|0;he=(v>>>1|r<<31)^(v>>>8|r<<24)^(v>>>7|r<<25)|0;t=t+he|0;e=e+((r>>>1|v<<31)^(r>>>8|v<<24)^r>>>7)+(t>>>0>>0?1:0)|0;he=(V>>>19|K<<13)^(V<<3|K>>>29)^(V>>>6|K<<26)|0;t=t+he|0;e=e+((K>>>19|V<<13)^(K<<3|V>>>29)^K>>>6)+(t>>>0>>0?1:0)|0;le=0x9ef14ad2+t|0;fe=0xe49b69c1+e+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;v=v+R|0;r=r+D+(v>>>0>>0?1:0)|0;he=(x>>>1|w<<31)^(x>>>8|w<<24)^(x>>>7|w<<25)|0;v=v+he|0;r=r+((w>>>1|x<<31)^(w>>>8|x<<24)^w>>>7)+(v>>>0>>0?1:0)|0;he=(G>>>19|W<<13)^(G<<3|W>>>29)^(G>>>6|W<<26)|0;v=v+he|0;r=r+((W>>>19|G<<13)^(W<<3|G>>>29)^W>>>6)+(v>>>0>>0?1:0)|0;le=0x384f25e3+v|0;fe=0xefbe4786+r+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;x=x+U|0;w=w+L+(x>>>0>>0?1:0)|0;he=(k>>>1|_<<31)^(k>>>8|_<<24)^(k>>>7|_<<25)|0;x=x+he|0;w=w+((_>>>1|k<<31)^(_>>>8|k<<24)^_>>>7)+(x>>>0>>0?1:0)|0;he=(t>>>19|e<<13)^(t<<3|e>>>29)^(t>>>6|e<<26)|0;x=x+he|0;w=w+((e>>>19|t<<13)^(e<<3|t>>>29)^e>>>6)+(x>>>0>>0?1:0)|0;le=0x8b8cd5b5+x|0;fe=0xfc19dc6+w+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;k=k+z|0;_=_+F+(k>>>0>>0?1:0)|0;he=(E>>>1|S<<31)^(E>>>8|S<<24)^(E>>>7|S<<25)|0;k=k+he|0;_=_+((S>>>1|E<<31)^(S>>>8|E<<24)^S>>>7)+(k>>>0>>0?1:0)|0;he=(v>>>19|r<<13)^(v<<3|r>>>29)^(v>>>6|r<<26)|0;k=k+he|0;_=_+((r>>>19|v<<13)^(r<<3|v>>>29)^r>>>6)+(k>>>0>>0?1:0)|0;le=0x77ac9c65+k|0;fe=0x240ca1cc+_+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;E=E+H|0;S=S+q+(E>>>0>>0?1:0)|0;he=(T>>>1|A<<31)^(T>>>8|A<<24)^(T>>>7|A<<25)|0;E=E+he|0;S=S+((A>>>1|T<<31)^(A>>>8|T<<24)^A>>>7)+(E>>>0>>0?1:0)|0;he=(x>>>19|w<<13)^(x<<3|w>>>29)^(x>>>6|w<<26)|0;E=E+he|0;S=S+((w>>>19|x<<13)^(w<<3|x>>>29)^w>>>6)+(E>>>0>>0?1:0)|0;le=0x592b0275+E|0;fe=0x2de92c6f+S+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;T=T+V|0;A=A+K+(T>>>0>>0?1:0)|0;he=(j>>>1|C<<31)^(j>>>8|C<<24)^(j>>>7|C<<25)|0;T=T+he|0;A=A+((C>>>1|j<<31)^(C>>>8|j<<24)^C>>>7)+(T>>>0>>0?1:0)|0;he=(k>>>19|_<<13)^(k<<3|_>>>29)^(k>>>6|_<<26)|0;T=T+he|0;A=A+((_>>>19|k<<13)^(_<<3|k>>>29)^_>>>6)+(T>>>0>>0?1:0)|0;le=0x6ea6e483+T|0;fe=0x4a7484aa+A+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;j=j+G|0;C=C+W+(j>>>0>>0?1:0)|0;he=(B>>>1|M<<31)^(B>>>8|M<<24)^(B>>>7|M<<25)|0;j=j+he|0;C=C+((M>>>1|B<<31)^(M>>>8|B<<24)^M>>>7)+(j>>>0>>0?1:0)|0;he=(E>>>19|S<<13)^(E<<3|S>>>29)^(E>>>6|S<<26)|0;j=j+he|0;C=C+((S>>>19|E<<13)^(S<<3|E>>>29)^S>>>6)+(j>>>0>>0?1:0)|0;le=0xbd41fbd4+j|0;fe=0x5cb0a9dc+C+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;B=B+t|0;M=M+e+(B>>>0>>0?1:0)|0;he=(P>>>1|O<<31)^(P>>>8|O<<24)^(P>>>7|O<<25)|0;B=B+he|0;M=M+((O>>>1|P<<31)^(O>>>8|P<<24)^O>>>7)+(B>>>0>>0?1:0)|0;he=(T>>>19|A<<13)^(T<<3|A>>>29)^(T>>>6|A<<26)|0;B=B+he|0;M=M+((A>>>19|T<<13)^(A<<3|T>>>29)^A>>>6)+(B>>>0>>0?1:0)|0;le=0x831153b5+B|0;fe=0x76f988da+M+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;P=P+v|0;O=O+r+(P>>>0>>0?1:0)|0;he=(N>>>1|I<<31)^(N>>>8|I<<24)^(N>>>7|I<<25)|0;P=P+he|0;O=O+((I>>>1|N<<31)^(I>>>8|N<<24)^I>>>7)+(P>>>0>>0?1:0)|0;he=(j>>>19|C<<13)^(j<<3|C>>>29)^(j>>>6|C<<26)|0;P=P+he|0;O=O+((C>>>19|j<<13)^(C<<3|j>>>29)^C>>>6)+(P>>>0>>0?1:0)|0;le=0xee66dfab+P|0;fe=0x983e5152+O+(le>>>0

>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;N=N+x|0;I=I+w+(N>>>0>>0?1:0)|0;he=(R>>>1|D<<31)^(R>>>8|D<<24)^(R>>>7|D<<25)|0;N=N+he|0;I=I+((D>>>1|R<<31)^(D>>>8|R<<24)^D>>>7)+(N>>>0>>0?1:0)|0;he=(B>>>19|M<<13)^(B<<3|M>>>29)^(B>>>6|M<<26)|0;N=N+he|0;I=I+((M>>>19|B<<13)^(M<<3|B>>>29)^M>>>6)+(N>>>0>>0?1:0)|0;le=0x2db43210+N|0;fe=0xa831c66d+I+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;R=R+k|0;D=D+_+(R>>>0>>0?1:0)|0;he=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25)|0;R=R+he|0;D=D+((L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7)+(R>>>0>>0?1:0)|0;he=(P>>>19|O<<13)^(P<<3|O>>>29)^(P>>>6|O<<26)|0;R=R+he|0;D=D+((O>>>19|P<<13)^(O<<3|P>>>29)^O>>>6)+(R>>>0>>0?1:0)|0;le=0x98fb213f+R|0;fe=0xb00327c8+D+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;U=U+E|0;L=L+S+(U>>>0>>0?1:0)|0;he=(z>>>1|F<<31)^(z>>>8|F<<24)^(z>>>7|F<<25)|0;U=U+he|0;L=L+((F>>>1|z<<31)^(F>>>8|z<<24)^F>>>7)+(U>>>0>>0?1:0)|0;he=(N>>>19|I<<13)^(N<<3|I>>>29)^(N>>>6|I<<26)|0;U=U+he|0;L=L+((I>>>19|N<<13)^(I<<3|N>>>29)^I>>>6)+(U>>>0>>0?1:0)|0;le=0xbeef0ee4+U|0;fe=0xbf597fc7+L+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;z=z+T|0;F=F+A+(z>>>0>>0?1:0)|0;he=(H>>>1|q<<31)^(H>>>8|q<<24)^(H>>>7|q<<25)|0;z=z+he|0;F=F+((q>>>1|H<<31)^(q>>>8|H<<24)^q>>>7)+(z>>>0>>0?1:0)|0;he=(R>>>19|D<<13)^(R<<3|D>>>29)^(R>>>6|D<<26)|0;z=z+he|0;F=F+((D>>>19|R<<13)^(D<<3|R>>>29)^D>>>6)+(z>>>0>>0?1:0)|0;le=0x3da88fc2+z|0;fe=0xc6e00bf3+F+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;H=H+j|0;q=q+C+(H>>>0>>0?1:0)|0;he=(V>>>1|K<<31)^(V>>>8|K<<24)^(V>>>7|K<<25)|0;H=H+he|0;q=q+((K>>>1|V<<31)^(K>>>8|V<<24)^K>>>7)+(H>>>0>>0?1:0)|0;he=(U>>>19|L<<13)^(U<<3|L>>>29)^(U>>>6|L<<26)|0;H=H+he|0;q=q+((L>>>19|U<<13)^(L<<3|U>>>29)^L>>>6)+(H>>>0>>0?1:0)|0;le=0x930aa725+H|0;fe=0xd5a79147+q+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;V=V+B|0;K=K+M+(V>>>0>>0?1:0)|0;he=(G>>>1|W<<31)^(G>>>8|W<<24)^(G>>>7|W<<25)|0;V=V+he|0;K=K+((W>>>1|G<<31)^(W>>>8|G<<24)^W>>>7)+(V>>>0>>0?1:0)|0;he=(z>>>19|F<<13)^(z<<3|F>>>29)^(z>>>6|F<<26)|0;V=V+he|0;K=K+((F>>>19|z<<13)^(F<<3|z>>>29)^F>>>6)+(V>>>0>>0?1:0)|0;le=0xe003826f+V|0;fe=0x6ca6351+K+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;G=G+P|0;W=W+O+(G>>>0

>>0?1:0)|0;he=(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)|0;G=G+he|0;W=W+((e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7)+(G>>>0>>0?1:0)|0;he=(H>>>19|q<<13)^(H<<3|q>>>29)^(H>>>6|q<<26)|0;G=G+he|0;W=W+((q>>>19|H<<13)^(q<<3|H>>>29)^q>>>6)+(G>>>0>>0?1:0)|0;le=0xa0e6e70+G|0;fe=0x14292967+W+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;t=t+N|0;e=e+I+(t>>>0>>0?1:0)|0;he=(v>>>1|r<<31)^(v>>>8|r<<24)^(v>>>7|r<<25)|0;t=t+he|0;e=e+((r>>>1|v<<31)^(r>>>8|v<<24)^r>>>7)+(t>>>0>>0?1:0)|0;he=(V>>>19|K<<13)^(V<<3|K>>>29)^(V>>>6|K<<26)|0;t=t+he|0;e=e+((K>>>19|V<<13)^(K<<3|V>>>29)^K>>>6)+(t>>>0>>0?1:0)|0;le=0x46d22ffc+t|0;fe=0x27b70a85+e+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;v=v+R|0;r=r+D+(v>>>0>>0?1:0)|0;he=(x>>>1|w<<31)^(x>>>8|w<<24)^(x>>>7|w<<25)|0;v=v+he|0;r=r+((w>>>1|x<<31)^(w>>>8|x<<24)^w>>>7)+(v>>>0>>0?1:0)|0;he=(G>>>19|W<<13)^(G<<3|W>>>29)^(G>>>6|W<<26)|0;v=v+he|0;r=r+((W>>>19|G<<13)^(W<<3|G>>>29)^W>>>6)+(v>>>0>>0?1:0)|0;le=0x5c26c926+v|0;fe=0x2e1b2138+r+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;x=x+U|0;w=w+L+(x>>>0>>0?1:0)|0;he=(k>>>1|_<<31)^(k>>>8|_<<24)^(k>>>7|_<<25)|0;x=x+he|0;w=w+((_>>>1|k<<31)^(_>>>8|k<<24)^_>>>7)+(x>>>0>>0?1:0)|0;he=(t>>>19|e<<13)^(t<<3|e>>>29)^(t>>>6|e<<26)|0;x=x+he|0;w=w+((e>>>19|t<<13)^(e<<3|t>>>29)^e>>>6)+(x>>>0>>0?1:0)|0;le=0x5ac42aed+x|0;fe=0x4d2c6dfc+w+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;k=k+z|0;_=_+F+(k>>>0>>0?1:0)|0;he=(E>>>1|S<<31)^(E>>>8|S<<24)^(E>>>7|S<<25)|0;k=k+he|0;_=_+((S>>>1|E<<31)^(S>>>8|E<<24)^S>>>7)+(k>>>0>>0?1:0)|0;he=(v>>>19|r<<13)^(v<<3|r>>>29)^(v>>>6|r<<26)|0;k=k+he|0;_=_+((r>>>19|v<<13)^(r<<3|v>>>29)^r>>>6)+(k>>>0>>0?1:0)|0;le=0x9d95b3df+k|0;fe=0x53380d13+_+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;E=E+H|0;S=S+q+(E>>>0>>0?1:0)|0;he=(T>>>1|A<<31)^(T>>>8|A<<24)^(T>>>7|A<<25)|0;E=E+he|0;S=S+((A>>>1|T<<31)^(A>>>8|T<<24)^A>>>7)+(E>>>0>>0?1:0)|0;he=(x>>>19|w<<13)^(x<<3|w>>>29)^(x>>>6|w<<26)|0;E=E+he|0;S=S+((w>>>19|x<<13)^(w<<3|x>>>29)^w>>>6)+(E>>>0>>0?1:0)|0;le=0x8baf63de+E|0;fe=0x650a7354+S+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;T=T+V|0;A=A+K+(T>>>0>>0?1:0)|0;he=(j>>>1|C<<31)^(j>>>8|C<<24)^(j>>>7|C<<25)|0;T=T+he|0;A=A+((C>>>1|j<<31)^(C>>>8|j<<24)^C>>>7)+(T>>>0>>0?1:0)|0;he=(k>>>19|_<<13)^(k<<3|_>>>29)^(k>>>6|_<<26)|0;T=T+he|0;A=A+((_>>>19|k<<13)^(_<<3|k>>>29)^_>>>6)+(T>>>0>>0?1:0)|0;le=0x3c77b2a8+T|0;fe=0x766a0abb+A+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;j=j+G|0;C=C+W+(j>>>0>>0?1:0)|0;he=(B>>>1|M<<31)^(B>>>8|M<<24)^(B>>>7|M<<25)|0;j=j+he|0;C=C+((M>>>1|B<<31)^(M>>>8|B<<24)^M>>>7)+(j>>>0>>0?1:0)|0;he=(E>>>19|S<<13)^(E<<3|S>>>29)^(E>>>6|S<<26)|0;j=j+he|0;C=C+((S>>>19|E<<13)^(S<<3|E>>>29)^S>>>6)+(j>>>0>>0?1:0)|0;le=0x47edaee6+j|0;fe=0x81c2c92e+C+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;B=B+t|0;M=M+e+(B>>>0>>0?1:0)|0;he=(P>>>1|O<<31)^(P>>>8|O<<24)^(P>>>7|O<<25)|0;B=B+he|0;M=M+((O>>>1|P<<31)^(O>>>8|P<<24)^O>>>7)+(B>>>0>>0?1:0)|0;he=(T>>>19|A<<13)^(T<<3|A>>>29)^(T>>>6|A<<26)|0;B=B+he|0;M=M+((A>>>19|T<<13)^(A<<3|T>>>29)^A>>>6)+(B>>>0>>0?1:0)|0;le=0x1482353b+B|0;fe=0x92722c85+M+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;P=P+v|0;O=O+r+(P>>>0>>0?1:0)|0;he=(N>>>1|I<<31)^(N>>>8|I<<24)^(N>>>7|I<<25)|0;P=P+he|0;O=O+((I>>>1|N<<31)^(I>>>8|N<<24)^I>>>7)+(P>>>0>>0?1:0)|0;he=(j>>>19|C<<13)^(j<<3|C>>>29)^(j>>>6|C<<26)|0;P=P+he|0;O=O+((C>>>19|j<<13)^(C<<3|j>>>29)^C>>>6)+(P>>>0>>0?1:0)|0;le=0x4cf10364+P|0;fe=0xa2bfe8a1+O+(le>>>0

>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;N=N+x|0;I=I+w+(N>>>0>>0?1:0)|0;he=(R>>>1|D<<31)^(R>>>8|D<<24)^(R>>>7|D<<25)|0;N=N+he|0;I=I+((D>>>1|R<<31)^(D>>>8|R<<24)^D>>>7)+(N>>>0>>0?1:0)|0;he=(B>>>19|M<<13)^(B<<3|M>>>29)^(B>>>6|M<<26)|0;N=N+he|0;I=I+((M>>>19|B<<13)^(M<<3|B>>>29)^M>>>6)+(N>>>0>>0?1:0)|0;le=0xbc423001+N|0;fe=0xa81a664b+I+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;R=R+k|0;D=D+_+(R>>>0>>0?1:0)|0;he=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25)|0;R=R+he|0;D=D+((L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7)+(R>>>0>>0?1:0)|0;he=(P>>>19|O<<13)^(P<<3|O>>>29)^(P>>>6|O<<26)|0;R=R+he|0;D=D+((O>>>19|P<<13)^(O<<3|P>>>29)^O>>>6)+(R>>>0>>0?1:0)|0;le=0xd0f89791+R|0;fe=0xc24b8b70+D+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;U=U+E|0;L=L+S+(U>>>0>>0?1:0)|0;he=(z>>>1|F<<31)^(z>>>8|F<<24)^(z>>>7|F<<25)|0;U=U+he|0;L=L+((F>>>1|z<<31)^(F>>>8|z<<24)^F>>>7)+(U>>>0>>0?1:0)|0;he=(N>>>19|I<<13)^(N<<3|I>>>29)^(N>>>6|I<<26)|0;U=U+he|0;L=L+((I>>>19|N<<13)^(I<<3|N>>>29)^I>>>6)+(U>>>0>>0?1:0)|0;le=0x654be30+U|0;fe=0xc76c51a3+L+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;z=z+T|0;F=F+A+(z>>>0>>0?1:0)|0;he=(H>>>1|q<<31)^(H>>>8|q<<24)^(H>>>7|q<<25)|0;z=z+he|0;F=F+((q>>>1|H<<31)^(q>>>8|H<<24)^q>>>7)+(z>>>0>>0?1:0)|0;he=(R>>>19|D<<13)^(R<<3|D>>>29)^(R>>>6|D<<26)|0;z=z+he|0;F=F+((D>>>19|R<<13)^(D<<3|R>>>29)^D>>>6)+(z>>>0>>0?1:0)|0;le=0xd6ef5218+z|0;fe=0xd192e819+F+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;H=H+j|0;q=q+C+(H>>>0>>0?1:0)|0;he=(V>>>1|K<<31)^(V>>>8|K<<24)^(V>>>7|K<<25)|0;H=H+he|0;q=q+((K>>>1|V<<31)^(K>>>8|V<<24)^K>>>7)+(H>>>0>>0?1:0)|0;he=(U>>>19|L<<13)^(U<<3|L>>>29)^(U>>>6|L<<26)|0;H=H+he|0;q=q+((L>>>19|U<<13)^(L<<3|U>>>29)^L>>>6)+(H>>>0>>0?1:0)|0;le=0x5565a910+H|0;fe=0xd6990624+q+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;V=V+B|0;K=K+M+(V>>>0>>0?1:0)|0;he=(G>>>1|W<<31)^(G>>>8|W<<24)^(G>>>7|W<<25)|0;V=V+he|0;K=K+((W>>>1|G<<31)^(W>>>8|G<<24)^W>>>7)+(V>>>0>>0?1:0)|0;he=(z>>>19|F<<13)^(z<<3|F>>>29)^(z>>>6|F<<26)|0;V=V+he|0;K=K+((F>>>19|z<<13)^(F<<3|z>>>29)^F>>>6)+(V>>>0>>0?1:0)|0;le=0x5771202a+V|0;fe=0xf40e3585+K+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;G=G+P|0;W=W+O+(G>>>0

>>0?1:0)|0;he=(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)|0;G=G+he|0;W=W+((e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7)+(G>>>0>>0?1:0)|0;he=(H>>>19|q<<13)^(H<<3|q>>>29)^(H>>>6|q<<26)|0;G=G+he|0;W=W+((q>>>19|H<<13)^(q<<3|H>>>29)^q>>>6)+(G>>>0>>0?1:0)|0;le=0x32bbd1b8+G|0;fe=0x106aa070+W+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;t=t+N|0;e=e+I+(t>>>0>>0?1:0)|0;he=(v>>>1|r<<31)^(v>>>8|r<<24)^(v>>>7|r<<25)|0;t=t+he|0;e=e+((r>>>1|v<<31)^(r>>>8|v<<24)^r>>>7)+(t>>>0>>0?1:0)|0;he=(V>>>19|K<<13)^(V<<3|K>>>29)^(V>>>6|K<<26)|0;t=t+he|0;e=e+((K>>>19|V<<13)^(K<<3|V>>>29)^K>>>6)+(t>>>0>>0?1:0)|0;le=0xb8d2d0c8+t|0;fe=0x19a4c116+e+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;v=v+R|0;r=r+D+(v>>>0>>0?1:0)|0;he=(x>>>1|w<<31)^(x>>>8|w<<24)^(x>>>7|w<<25)|0;v=v+he|0;r=r+((w>>>1|x<<31)^(w>>>8|x<<24)^w>>>7)+(v>>>0>>0?1:0)|0;he=(G>>>19|W<<13)^(G<<3|W>>>29)^(G>>>6|W<<26)|0;v=v+he|0;r=r+((W>>>19|G<<13)^(W<<3|G>>>29)^W>>>6)+(v>>>0>>0?1:0)|0;le=0x5141ab53+v|0;fe=0x1e376c08+r+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;x=x+U|0;w=w+L+(x>>>0>>0?1:0)|0;he=(k>>>1|_<<31)^(k>>>8|_<<24)^(k>>>7|_<<25)|0;x=x+he|0;w=w+((_>>>1|k<<31)^(_>>>8|k<<24)^_>>>7)+(x>>>0>>0?1:0)|0;he=(t>>>19|e<<13)^(t<<3|e>>>29)^(t>>>6|e<<26)|0;x=x+he|0;w=w+((e>>>19|t<<13)^(e<<3|t>>>29)^e>>>6)+(x>>>0>>0?1:0)|0;le=0xdf8eeb99+x|0;fe=0x2748774c+w+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;k=k+z|0;_=_+F+(k>>>0>>0?1:0)|0;he=(E>>>1|S<<31)^(E>>>8|S<<24)^(E>>>7|S<<25)|0;k=k+he|0;_=_+((S>>>1|E<<31)^(S>>>8|E<<24)^S>>>7)+(k>>>0>>0?1:0)|0;he=(v>>>19|r<<13)^(v<<3|r>>>29)^(v>>>6|r<<26)|0;k=k+he|0;_=_+((r>>>19|v<<13)^(r<<3|v>>>29)^r>>>6)+(k>>>0>>0?1:0)|0;le=0xe19b48a8+k|0;fe=0x34b0bcb5+_+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;E=E+H|0;S=S+q+(E>>>0>>0?1:0)|0;he=(T>>>1|A<<31)^(T>>>8|A<<24)^(T>>>7|A<<25)|0;E=E+he|0;S=S+((A>>>1|T<<31)^(A>>>8|T<<24)^A>>>7)+(E>>>0>>0?1:0)|0;he=(x>>>19|w<<13)^(x<<3|w>>>29)^(x>>>6|w<<26)|0;E=E+he|0;S=S+((w>>>19|x<<13)^(w<<3|x>>>29)^w>>>6)+(E>>>0>>0?1:0)|0;le=0xc5c95a63+E|0;fe=0x391c0cb3+S+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;T=T+V|0;A=A+K+(T>>>0>>0?1:0)|0;he=(j>>>1|C<<31)^(j>>>8|C<<24)^(j>>>7|C<<25)|0;T=T+he|0;A=A+((C>>>1|j<<31)^(C>>>8|j<<24)^C>>>7)+(T>>>0>>0?1:0)|0;he=(k>>>19|_<<13)^(k<<3|_>>>29)^(k>>>6|_<<26)|0;T=T+he|0;A=A+((_>>>19|k<<13)^(_<<3|k>>>29)^_>>>6)+(T>>>0>>0?1:0)|0;le=0xe3418acb+T|0;fe=0x4ed8aa4a+A+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;j=j+G|0;C=C+W+(j>>>0>>0?1:0)|0;he=(B>>>1|M<<31)^(B>>>8|M<<24)^(B>>>7|M<<25)|0;j=j+he|0;C=C+((M>>>1|B<<31)^(M>>>8|B<<24)^M>>>7)+(j>>>0>>0?1:0)|0;he=(E>>>19|S<<13)^(E<<3|S>>>29)^(E>>>6|S<<26)|0;j=j+he|0;C=C+((S>>>19|E<<13)^(S<<3|E>>>29)^S>>>6)+(j>>>0>>0?1:0)|0;le=0x7763e373+j|0;fe=0x5b9cca4f+C+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;B=B+t|0;M=M+e+(B>>>0>>0?1:0)|0;he=(P>>>1|O<<31)^(P>>>8|O<<24)^(P>>>7|O<<25)|0;B=B+he|0;M=M+((O>>>1|P<<31)^(O>>>8|P<<24)^O>>>7)+(B>>>0>>0?1:0)|0;he=(T>>>19|A<<13)^(T<<3|A>>>29)^(T>>>6|A<<26)|0;B=B+he|0;M=M+((A>>>19|T<<13)^(A<<3|T>>>29)^A>>>6)+(B>>>0>>0?1:0)|0;le=0xd6b2b8a3+B|0;fe=0x682e6ff3+M+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;P=P+v|0;O=O+r+(P>>>0>>0?1:0)|0;he=(N>>>1|I<<31)^(N>>>8|I<<24)^(N>>>7|I<<25)|0;P=P+he|0;O=O+((I>>>1|N<<31)^(I>>>8|N<<24)^I>>>7)+(P>>>0>>0?1:0)|0;he=(j>>>19|C<<13)^(j<<3|C>>>29)^(j>>>6|C<<26)|0;P=P+he|0;O=O+((C>>>19|j<<13)^(C<<3|j>>>29)^C>>>6)+(P>>>0>>0?1:0)|0;le=0x5defb2fc+P|0;fe=0x748f82ee+O+(le>>>0

>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;N=N+x|0;I=I+w+(N>>>0>>0?1:0)|0;he=(R>>>1|D<<31)^(R>>>8|D<<24)^(R>>>7|D<<25)|0;N=N+he|0;I=I+((D>>>1|R<<31)^(D>>>8|R<<24)^D>>>7)+(N>>>0>>0?1:0)|0;he=(B>>>19|M<<13)^(B<<3|M>>>29)^(B>>>6|M<<26)|0;N=N+he|0;I=I+((M>>>19|B<<13)^(M<<3|B>>>29)^M>>>6)+(N>>>0>>0?1:0)|0;le=0x43172f60+N|0;fe=0x78a5636f+I+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;R=R+k|0;D=D+_+(R>>>0>>0?1:0)|0;he=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25)|0;R=R+he|0;D=D+((L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7)+(R>>>0>>0?1:0)|0;he=(P>>>19|O<<13)^(P<<3|O>>>29)^(P>>>6|O<<26)|0;R=R+he|0;D=D+((O>>>19|P<<13)^(O<<3|P>>>29)^O>>>6)+(R>>>0>>0?1:0)|0;le=0xa1f0ab72+R|0;fe=0x84c87814+D+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;U=U+E|0;L=L+S+(U>>>0>>0?1:0)|0;he=(z>>>1|F<<31)^(z>>>8|F<<24)^(z>>>7|F<<25)|0;U=U+he|0;L=L+((F>>>1|z<<31)^(F>>>8|z<<24)^F>>>7)+(U>>>0>>0?1:0)|0;he=(N>>>19|I<<13)^(N<<3|I>>>29)^(N>>>6|I<<26)|0;U=U+he|0;L=L+((I>>>19|N<<13)^(I<<3|N>>>29)^I>>>6)+(U>>>0>>0?1:0)|0;le=0x1a6439ec+U|0;fe=0x8cc70208+L+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;z=z+T|0;F=F+A+(z>>>0>>0?1:0)|0;he=(H>>>1|q<<31)^(H>>>8|q<<24)^(H>>>7|q<<25)|0;z=z+he|0;F=F+((q>>>1|H<<31)^(q>>>8|H<<24)^q>>>7)+(z>>>0>>0?1:0)|0;he=(R>>>19|D<<13)^(R<<3|D>>>29)^(R>>>6|D<<26)|0;z=z+he|0;F=F+((D>>>19|R<<13)^(D<<3|R>>>29)^D>>>6)+(z>>>0>>0?1:0)|0;le=0x23631e28+z|0;fe=0x90befffa+F+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;H=H+j|0;q=q+C+(H>>>0>>0?1:0)|0;he=(V>>>1|K<<31)^(V>>>8|K<<24)^(V>>>7|K<<25)|0;H=H+he|0;q=q+((K>>>1|V<<31)^(K>>>8|V<<24)^K>>>7)+(H>>>0>>0?1:0)|0;he=(U>>>19|L<<13)^(U<<3|L>>>29)^(U>>>6|L<<26)|0;H=H+he|0;q=q+((L>>>19|U<<13)^(L<<3|U>>>29)^L>>>6)+(H>>>0>>0?1:0)|0;le=0xde82bde9+H|0;fe=0xa4506ceb+q+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;V=V+B|0;K=K+M+(V>>>0>>0?1:0)|0;he=(G>>>1|W<<31)^(G>>>8|W<<24)^(G>>>7|W<<25)|0;V=V+he|0;K=K+((W>>>1|G<<31)^(W>>>8|G<<24)^W>>>7)+(V>>>0>>0?1:0)|0;he=(z>>>19|F<<13)^(z<<3|F>>>29)^(z>>>6|F<<26)|0;V=V+he|0;K=K+((F>>>19|z<<13)^(F<<3|z>>>29)^F>>>6)+(V>>>0>>0?1:0)|0;le=0xb2c67915+V|0;fe=0xbef9a3f7+K+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;G=G+P|0;W=W+O+(G>>>0

>>0?1:0)|0;he=(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)|0;G=G+he|0;W=W+((e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7)+(G>>>0>>0?1:0)|0;he=(H>>>19|q<<13)^(H<<3|q>>>29)^(H>>>6|q<<26)|0;G=G+he|0;W=W+((q>>>19|H<<13)^(q<<3|H>>>29)^q>>>6)+(G>>>0>>0?1:0)|0;le=0xe372532b+G|0;fe=0xc67178f2+W+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;t=t+N|0;e=e+I+(t>>>0>>0?1:0)|0;he=(v>>>1|r<<31)^(v>>>8|r<<24)^(v>>>7|r<<25)|0;t=t+he|0;e=e+((r>>>1|v<<31)^(r>>>8|v<<24)^r>>>7)+(t>>>0>>0?1:0)|0;he=(V>>>19|K<<13)^(V<<3|K>>>29)^(V>>>6|K<<26)|0;t=t+he|0;e=e+((K>>>19|V<<13)^(K<<3|V>>>29)^K>>>6)+(t>>>0>>0?1:0)|0;le=0xea26619c+t|0;fe=0xca273ece+e+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;v=v+R|0;r=r+D+(v>>>0>>0?1:0)|0;he=(x>>>1|w<<31)^(x>>>8|w<<24)^(x>>>7|w<<25)|0;v=v+he|0;r=r+((w>>>1|x<<31)^(w>>>8|x<<24)^w>>>7)+(v>>>0>>0?1:0)|0;he=(G>>>19|W<<13)^(G<<3|W>>>29)^(G>>>6|W<<26)|0;v=v+he|0;r=r+((W>>>19|G<<13)^(W<<3|G>>>29)^W>>>6)+(v>>>0>>0?1:0)|0;le=0x21c0c207+v|0;fe=0xd186b8c7+r+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;x=x+U|0;w=w+L+(x>>>0>>0?1:0)|0;he=(k>>>1|_<<31)^(k>>>8|_<<24)^(k>>>7|_<<25)|0;x=x+he|0;w=w+((_>>>1|k<<31)^(_>>>8|k<<24)^_>>>7)+(x>>>0>>0?1:0)|0;he=(t>>>19|e<<13)^(t<<3|e>>>29)^(t>>>6|e<<26)|0;x=x+he|0;w=w+((e>>>19|t<<13)^(e<<3|t>>>29)^e>>>6)+(x>>>0>>0?1:0)|0;le=0xcde0eb1e+x|0;fe=0xeada7dd6+w+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;k=k+z|0;_=_+F+(k>>>0>>0?1:0)|0;he=(E>>>1|S<<31)^(E>>>8|S<<24)^(E>>>7|S<<25)|0;k=k+he|0;_=_+((S>>>1|E<<31)^(S>>>8|E<<24)^S>>>7)+(k>>>0>>0?1:0)|0;he=(v>>>19|r<<13)^(v<<3|r>>>29)^(v>>>6|r<<26)|0;k=k+he|0;_=_+((r>>>19|v<<13)^(r<<3|v>>>29)^r>>>6)+(k>>>0>>0?1:0)|0;le=0xee6ed178+k|0;fe=0xf57d4f7f+_+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;E=E+H|0;S=S+q+(E>>>0>>0?1:0)|0;he=(T>>>1|A<<31)^(T>>>8|A<<24)^(T>>>7|A<<25)|0;E=E+he|0;S=S+((A>>>1|T<<31)^(A>>>8|T<<24)^A>>>7)+(E>>>0>>0?1:0)|0;he=(x>>>19|w<<13)^(x<<3|w>>>29)^(x>>>6|w<<26)|0;E=E+he|0;S=S+((w>>>19|x<<13)^(w<<3|x>>>29)^w>>>6)+(E>>>0>>0?1:0)|0;le=0x72176fba+E|0;fe=0x6f067aa+S+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;T=T+V|0;A=A+K+(T>>>0>>0?1:0)|0;he=(j>>>1|C<<31)^(j>>>8|C<<24)^(j>>>7|C<<25)|0;T=T+he|0;A=A+((C>>>1|j<<31)^(C>>>8|j<<24)^C>>>7)+(T>>>0>>0?1:0)|0;he=(k>>>19|_<<13)^(k<<3|_>>>29)^(k>>>6|_<<26)|0;T=T+he|0;A=A+((_>>>19|k<<13)^(_<<3|k>>>29)^_>>>6)+(T>>>0>>0?1:0)|0;le=0xa2c898a6+T|0;fe=0xa637dc5+A+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;j=j+G|0;C=C+W+(j>>>0>>0?1:0)|0;he=(B>>>1|M<<31)^(B>>>8|M<<24)^(B>>>7|M<<25)|0;j=j+he|0;C=C+((M>>>1|B<<31)^(M>>>8|B<<24)^M>>>7)+(j>>>0>>0?1:0)|0;he=(E>>>19|S<<13)^(E<<3|S>>>29)^(E>>>6|S<<26)|0;j=j+he|0;C=C+((S>>>19|E<<13)^(S<<3|E>>>29)^S>>>6)+(j>>>0>>0?1:0)|0;le=0xbef90dae+j|0;fe=0x113f9804+C+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;B=B+t|0;M=M+e+(B>>>0>>0?1:0)|0;he=(P>>>1|O<<31)^(P>>>8|O<<24)^(P>>>7|O<<25)|0;B=B+he|0;M=M+((O>>>1|P<<31)^(O>>>8|P<<24)^O>>>7)+(B>>>0>>0?1:0)|0;he=(T>>>19|A<<13)^(T<<3|A>>>29)^(T>>>6|A<<26)|0;B=B+he|0;M=M+((A>>>19|T<<13)^(A<<3|T>>>29)^A>>>6)+(B>>>0>>0?1:0)|0;le=0x131c471b+B|0;fe=0x1b710b35+M+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;P=P+v|0;O=O+r+(P>>>0>>0?1:0)|0;he=(N>>>1|I<<31)^(N>>>8|I<<24)^(N>>>7|I<<25)|0;P=P+he|0;O=O+((I>>>1|N<<31)^(I>>>8|N<<24)^I>>>7)+(P>>>0>>0?1:0)|0;he=(j>>>19|C<<13)^(j<<3|C>>>29)^(j>>>6|C<<26)|0;P=P+he|0;O=O+((C>>>19|j<<13)^(C<<3|j>>>29)^C>>>6)+(P>>>0>>0?1:0)|0;le=0x23047d84+P|0;fe=0x28db77f5+O+(le>>>0

>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;N=N+x|0;I=I+w+(N>>>0>>0?1:0)|0;he=(R>>>1|D<<31)^(R>>>8|D<<24)^(R>>>7|D<<25)|0;N=N+he|0;I=I+((D>>>1|R<<31)^(D>>>8|R<<24)^D>>>7)+(N>>>0>>0?1:0)|0;he=(B>>>19|M<<13)^(B<<3|M>>>29)^(B>>>6|M<<26)|0;N=N+he|0;I=I+((M>>>19|B<<13)^(M<<3|B>>>29)^M>>>6)+(N>>>0>>0?1:0)|0;le=0x40c72493+N|0;fe=0x32caab7b+I+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;R=R+k|0;D=D+_+(R>>>0>>0?1:0)|0;he=(U>>>1|L<<31)^(U>>>8|L<<24)^(U>>>7|L<<25)|0;R=R+he|0;D=D+((L>>>1|U<<31)^(L>>>8|U<<24)^L>>>7)+(R>>>0>>0?1:0)|0;he=(P>>>19|O<<13)^(P<<3|O>>>29)^(P>>>6|O<<26)|0;R=R+he|0;D=D+((O>>>19|P<<13)^(O<<3|P>>>29)^O>>>6)+(R>>>0>>0?1:0)|0;le=0x15c9bebc+R|0;fe=0x3c9ebe0a+D+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;U=U+E|0;L=L+S+(U>>>0>>0?1:0)|0;he=(z>>>1|F<<31)^(z>>>8|F<<24)^(z>>>7|F<<25)|0;U=U+he|0;L=L+((F>>>1|z<<31)^(F>>>8|z<<24)^F>>>7)+(U>>>0>>0?1:0)|0;he=(N>>>19|I<<13)^(N<<3|I>>>29)^(N>>>6|I<<26)|0;U=U+he|0;L=L+((I>>>19|N<<13)^(I<<3|N>>>29)^I>>>6)+(U>>>0>>0?1:0)|0;le=0x9c100d4c+U|0;fe=0x431d67c4+L+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;z=z+T|0;F=F+A+(z>>>0>>0?1:0)|0;he=(H>>>1|q<<31)^(H>>>8|q<<24)^(H>>>7|q<<25)|0;z=z+he|0;F=F+((q>>>1|H<<31)^(q>>>8|H<<24)^q>>>7)+(z>>>0>>0?1:0)|0;he=(R>>>19|D<<13)^(R<<3|D>>>29)^(R>>>6|D<<26)|0;z=z+he|0;F=F+((D>>>19|R<<13)^(D<<3|R>>>29)^D>>>6)+(z>>>0>>0?1:0)|0;le=0xcb3e42b6+z|0;fe=0x4cc5d4be+F+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;H=H+j|0;q=q+C+(H>>>0>>0?1:0)|0;he=(V>>>1|K<<31)^(V>>>8|K<<24)^(V>>>7|K<<25)|0;H=H+he|0;q=q+((K>>>1|V<<31)^(K>>>8|V<<24)^K>>>7)+(H>>>0>>0?1:0)|0;he=(U>>>19|L<<13)^(U<<3|L>>>29)^(U>>>6|L<<26)|0;H=H+he|0;q=q+((L>>>19|U<<13)^(L<<3|U>>>29)^L>>>6)+(H>>>0>>0?1:0)|0;le=0xfc657e2a+H|0;fe=0x597f299c+q+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;V=V+B|0;K=K+M+(V>>>0>>0?1:0)|0;he=(G>>>1|W<<31)^(G>>>8|W<<24)^(G>>>7|W<<25)|0;V=V+he|0;K=K+((W>>>1|G<<31)^(W>>>8|G<<24)^W>>>7)+(V>>>0>>0?1:0)|0;he=(z>>>19|F<<13)^(z<<3|F>>>29)^(z>>>6|F<<26)|0;V=V+he|0;K=K+((F>>>19|z<<13)^(F<<3|z>>>29)^F>>>6)+(V>>>0>>0?1:0)|0;le=0x3ad6faec+V|0;fe=0x5fcb6fab+K+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;G=G+P|0;W=W+O+(G>>>0

>>0?1:0)|0;he=(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)|0;G=G+he|0;W=W+((e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7)+(G>>>0>>0?1:0)|0;he=(H>>>19|q<<13)^(H<<3|q>>>29)^(H>>>6|q<<26)|0;G=G+he|0;W=W+((q>>>19|H<<13)^(q<<3|H>>>29)^q>>>6)+(G>>>0>>0?1:0)|0;le=0x4a475817+G|0;fe=0x6c44198c+W+(le>>>0>>0?1:0)|0;le=le+ue|0;fe=fe+ce+(le>>>0>>0?1:0)|0;he=(ne>>>14|re<<18)^(ne>>>18|re<<14)^(ne<<23|re>>>9)|0;le=le+he|0;fe=fe+((re>>>14|ne<<18)^(re>>>18|ne<<14)^(re<<23|ne>>>9))+(le>>>0>>0?1:0)|0;he=se^ne&(oe^se)|0;le=le+he|0;fe=fe+(ae^re&(ie^ae))+(le>>>0>>0?1:0)|0;ue=se;ce=ae;se=oe;ae=ie;oe=ne;ie=re;ne=te+le|0;re=ee+fe+(ne>>>0>>0?1:0)|0;te=X;ee=Z;X=Y;Z=Q;Y=J;Q=$;J=le+(Y&X^te&(Y^X))|0;$=fe+(Q&Z^ee&(Q^Z))+(J>>>0>>0?1:0)|0;he=(Y>>>28|Q<<4)^(Y<<30|Q>>>2)^(Y<<25|Q>>>7)|0;J=J+he|0;$=$+((Q>>>28|Y<<4)^(Q<<30|Y>>>2)^(Q<<25|Y>>>7))+(J>>>0>>0?1:0)|0;i=i+J|0;n=n+$+(i>>>0>>0?1:0)|0;a=a+Y|0;o=o+Q+(a>>>0>>0?1:0)|0;c=c+X|0;s=s+Z+(c>>>0>>0?1:0)|0;f=f+te|0;u=u+ee+(f>>>0>>0?1:0)|0;h=h+ne|0;l=l+re+(h>>>0>>0?1:0)|0;p=p+oe|0;d=d+ie+(p>>>0>>0?1:0)|0;y=y+se|0;m=m+ae+(y>>>0>>0?1:0)|0;b=b+ue|0;g=g+ce+(b>>>0>>0?1:0)|0}function te(e){e=e|0;ee(X[e|0]<<24|X[e|1]<<16|X[e|2]<<8|X[e|3],X[e|4]<<24|X[e|5]<<16|X[e|6]<<8|X[e|7],X[e|8]<<24|X[e|9]<<16|X[e|10]<<8|X[e|11],X[e|12]<<24|X[e|13]<<16|X[e|14]<<8|X[e|15],X[e|16]<<24|X[e|17]<<16|X[e|18]<<8|X[e|19],X[e|20]<<24|X[e|21]<<16|X[e|22]<<8|X[e|23],X[e|24]<<24|X[e|25]<<16|X[e|26]<<8|X[e|27],X[e|28]<<24|X[e|29]<<16|X[e|30]<<8|X[e|31],X[e|32]<<24|X[e|33]<<16|X[e|34]<<8|X[e|35],X[e|36]<<24|X[e|37]<<16|X[e|38]<<8|X[e|39],X[e|40]<<24|X[e|41]<<16|X[e|42]<<8|X[e|43],X[e|44]<<24|X[e|45]<<16|X[e|46]<<8|X[e|47],X[e|48]<<24|X[e|49]<<16|X[e|50]<<8|X[e|51],X[e|52]<<24|X[e|53]<<16|X[e|54]<<8|X[e|55],X[e|56]<<24|X[e|57]<<16|X[e|58]<<8|X[e|59],X[e|60]<<24|X[e|61]<<16|X[e|62]<<8|X[e|63],X[e|64]<<24|X[e|65]<<16|X[e|66]<<8|X[e|67],X[e|68]<<24|X[e|69]<<16|X[e|70]<<8|X[e|71],X[e|72]<<24|X[e|73]<<16|X[e|74]<<8|X[e|75],X[e|76]<<24|X[e|77]<<16|X[e|78]<<8|X[e|79],X[e|80]<<24|X[e|81]<<16|X[e|82]<<8|X[e|83],X[e|84]<<24|X[e|85]<<16|X[e|86]<<8|X[e|87],X[e|88]<<24|X[e|89]<<16|X[e|90]<<8|X[e|91],X[e|92]<<24|X[e|93]<<16|X[e|94]<<8|X[e|95],X[e|96]<<24|X[e|97]<<16|X[e|98]<<8|X[e|99],X[e|100]<<24|X[e|101]<<16|X[e|102]<<8|X[e|103],X[e|104]<<24|X[e|105]<<16|X[e|106]<<8|X[e|107],X[e|108]<<24|X[e|109]<<16|X[e|110]<<8|X[e|111],X[e|112]<<24|X[e|113]<<16|X[e|114]<<8|X[e|115],X[e|116]<<24|X[e|117]<<16|X[e|118]<<8|X[e|119],X[e|120]<<24|X[e|121]<<16|X[e|122]<<8|X[e|123],X[e|124]<<24|X[e|125]<<16|X[e|126]<<8|X[e|127])}function re(e){e=e|0;X[e|0]=n>>>24;X[e|1]=n>>>16&255;X[e|2]=n>>>8&255;X[e|3]=n&255;X[e|4]=i>>>24;X[e|5]=i>>>16&255;X[e|6]=i>>>8&255;X[e|7]=i&255;X[e|8]=o>>>24;X[e|9]=o>>>16&255;X[e|10]=o>>>8&255;X[e|11]=o&255;X[e|12]=a>>>24;X[e|13]=a>>>16&255;X[e|14]=a>>>8&255;X[e|15]=a&255;X[e|16]=s>>>24;X[e|17]=s>>>16&255;X[e|18]=s>>>8&255;X[e|19]=s&255;X[e|20]=c>>>24;X[e|21]=c>>>16&255;X[e|22]=c>>>8&255;X[e|23]=c&255;X[e|24]=u>>>24;X[e|25]=u>>>16&255;X[e|26]=u>>>8&255;X[e|27]=u&255;X[e|28]=f>>>24;X[e|29]=f>>>16&255;X[e|30]=f>>>8&255;X[e|31]=f&255;X[e|32]=l>>>24;X[e|33]=l>>>16&255;X[e|34]=l>>>8&255;X[e|35]=l&255;X[e|36]=h>>>24;X[e|37]=h>>>16&255;X[e|38]=h>>>8&255;X[e|39]=h&255;X[e|40]=d>>>24;X[e|41]=d>>>16&255;X[e|42]=d>>>8&255;X[e|43]=d&255;X[e|44]=p>>>24;X[e|45]=p>>>16&255;X[e|46]=p>>>8&255;X[e|47]=p&255;X[e|48]=m>>>24;X[e|49]=m>>>16&255;X[e|50]=m>>>8&255;X[e|51]=m&255;X[e|52]=y>>>24;X[e|53]=y>>>16&255;X[e|54]=y>>>8&255;X[e|55]=y&255;X[e|56]=g>>>24;X[e|57]=g>>>16&255;X[e|58]=g>>>8&255;X[e|59]=g&255;X[e|60]=b>>>24;X[e|61]=b>>>16&255;X[e|62]=b>>>8&255;X[e|63]=b&255}function ne(){n=0x6a09e667;i=0xf3bcc908;o=0xbb67ae85;a=0x84caa73b;s=0x3c6ef372;c=0xfe94f82b;u=0xa54ff53a;f=0x5f1d36f1;l=0x510e527f;h=0xade682d1;d=0x9b05688c;p=0x2b3e6c1f;m=0x1f83d9ab;y=0xfb41bd6b;g=0x5be0cd19;b=0x137e2179;v=w=0}function ie(e,t,r,x,_,k,S,E,A,T,C,j,M,B,O,P,I,N){e=e|0;t=t|0;r=r|0;x=x|0;_=_|0;k=k|0;S=S|0;E=E|0;A=A|0;T=T|0;C=C|0;j=j|0;M=M|0;B=B|0;O=O|0;P=P|0;I=I|0;N=N|0;n=e;i=t;o=r;a=x;s=_;c=k;u=S;f=E;l=A;h=T;d=C;p=j;m=M;y=B;g=O;b=P;v=I;w=N}function oe(e,t){e=e|0;t=t|0;var r=0;if(e&127)return-1;while((t|0)>=128){te(e);e=e+128|0;t=t-128|0;r=r+128|0}v=v+r|0;if(v>>>0>>0)w=w+1|0;return r|0}function ae(e,t,r){e=e|0;t=t|0;r=r|0;var n=0,i=0;if(e&127)return-1;if(~r)if(r&63)return-1;if((t|0)>=128){n=oe(e,t)|0;if((n|0)==-1)return-1;e=e+n|0;t=t-n|0}n=n+t|0;v=v+t|0;if(v>>>0>>0)w=w+1|0;X[e|t]=0x80;if((t|0)>=112){for(i=t+1|0;(i|0)<128;i=i+1|0)X[e|i]=0x00;te(e);t=0;X[e|0]=0}for(i=t+1|0;(i|0)<123;i=i+1|0)X[e|i]=0;X[e|120]=w>>>21&255;X[e|121]=w>>>13&255;X[e|122]=w>>>5&255;X[e|123]=w<<3&255|v>>>29;X[e|124]=v>>>21&255;X[e|125]=v>>>13&255;X[e|126]=v>>>5&255;X[e|127]=v<<3&255;te(e);if(~r)re(r);return n|0}function se(){n=x;i=_;o=k;a=S;s=E;c=A;u=T;f=C;l=j;h=M;d=B;p=O;m=P;y=I;g=N;b=D;v=128;w=0}function ce(){n=R;i=L;o=U;a=F;s=z;c=q;u=H;f=K;l=V;h=W;d=G;p=$;m=J;y=Q;g=Y;b=Z;v=128;w=0}function ue(e,t,r,X,te,re,ie,oe,ae,se,ce,ue,fe,le,he,de,pe,me,ye,ge,be,ve,we,xe,_e,ke,Se,Ee,Ae,Te,Ce,je){e=e|0;t=t|0;r=r|0;X=X|0;te=te|0;re=re|0;ie=ie|0;oe=oe|0;ae=ae|0;se=se|0;ce=ce|0;ue=ue|0;fe=fe|0;le=le|0;he=he|0;de=de|0;pe=pe|0;me=me|0;ye=ye|0;ge=ge|0;be=be|0;ve=ve|0;we=we|0;xe=xe|0;_e=_e|0;ke=ke|0;Se=Se|0;Ee=Ee|0;Ae=Ae|0;Te=Te|0;Ce=Ce|0;je=je|0;ne();ee(e^0x5c5c5c5c,t^0x5c5c5c5c,r^0x5c5c5c5c,X^0x5c5c5c5c,te^0x5c5c5c5c,re^0x5c5c5c5c,ie^0x5c5c5c5c,oe^0x5c5c5c5c,ae^0x5c5c5c5c,se^0x5c5c5c5c,ce^0x5c5c5c5c,ue^0x5c5c5c5c,fe^0x5c5c5c5c,le^0x5c5c5c5c,he^0x5c5c5c5c,de^0x5c5c5c5c,pe^0x5c5c5c5c,me^0x5c5c5c5c,ye^0x5c5c5c5c,ge^0x5c5c5c5c,be^0x5c5c5c5c,ve^0x5c5c5c5c,we^0x5c5c5c5c,xe^0x5c5c5c5c,_e^0x5c5c5c5c,ke^0x5c5c5c5c,Se^0x5c5c5c5c,Ee^0x5c5c5c5c,Ae^0x5c5c5c5c,Te^0x5c5c5c5c,Ce^0x5c5c5c5c,je^0x5c5c5c5c);R=n;L=i;U=o;F=a;z=s;q=c;H=u;K=f;V=l;W=h;G=d;$=p;J=m;Q=y;Y=g;Z=b;ne();ee(e^0x36363636,t^0x36363636,r^0x36363636,X^0x36363636,te^0x36363636,re^0x36363636,ie^0x36363636,oe^0x36363636,ae^0x36363636,se^0x36363636,ce^0x36363636,ue^0x36363636,fe^0x36363636,le^0x36363636,he^0x36363636,de^0x36363636,pe^0x36363636,me^0x36363636,ye^0x36363636,ge^0x36363636,be^0x36363636,ve^0x36363636,we^0x36363636,xe^0x36363636,_e^0x36363636,ke^0x36363636,Se^0x36363636,Ee^0x36363636,Ae^0x36363636,Te^0x36363636,Ce^0x36363636,je^0x36363636);x=n;_=i;k=o;S=a;E=s;A=c;T=u;C=f;j=l;M=h;B=d;O=p;P=m;I=y;N=g;D=b;v=128;w=0}function fe(e,t,r){e=e|0;t=t|0;r=r|0;var v=0,w=0,x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0;if(e&127)return-1;if(~r)if(r&63)return-1;N=ae(e,t,-1)|0;v=n;w=i;x=o;_=a;k=s;S=c;E=u;A=f;T=l;C=h;j=d;M=p;B=m;O=y;P=g;I=b;ce();ee(v,w,x,_,k,S,E,A,T,C,j,M,B,O,P,I,0x80000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1536);if(~r)re(r);return N|0}function le(e,t,r,v,w){e=e|0;t=t|0;r=r|0;v=v|0;w=w|0;var x=0,_=0,k=0,S=0,E=0,A=0,T=0,C=0,j=0,M=0,B=0,O=0,P=0,I=0,N=0,D=0,R=0,L=0,U=0,F=0,z=0,q=0,H=0,K=0,V=0,W=0,G=0,$=0,J=0,Q=0,Y=0,Z=0;if(e&127)return-1;if(~w)if(w&63)return-1;X[e+t|0]=r>>>24;X[e+t+1|0]=r>>>16&255;X[e+t+2|0]=r>>>8&255;X[e+t+3|0]=r&255;fe(e,t+4|0,-1)|0;x=R=n;_=L=i;k=U=o;S=F=a;E=z=s;A=q=c;T=H=u;C=K=f;j=V=l;M=W=h;B=G=d;O=$=p;P=J=m;I=Q=y;N=Y=g;D=Z=b;v=v-1|0;while((v|0)>0){se();ee(R,L,U,F,z,q,H,K,V,W,G,$,J,Q,Y,Z,0x80000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1536);R=n;L=i;U=o;F=a;z=s;q=c;H=u;K=f;V=l;W=h;G=d;$=p;J=m;Q=y;Y=g;Z=b;ce();ee(R,L,U,F,z,q,H,K,V,W,G,$,J,Q,Y,Z,0x80000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1536);R=n;L=i;U=o;F=a;z=s;q=c;H=u;K=f;V=l;W=h;G=d;$=p;J=m;Q=y;Y=g;Z=b;x=x^n;_=_^i;k=k^o;S=S^a;E=E^s;A=A^c;T=T^u;C=C^f;j=j^l;M=M^h;B=B^d;O=O^p;P=P^m;I=I^y;N=N^g;D=D^b;v=v-1|0}n=x;i=_;o=k;a=S;s=E;c=A;u=T;f=C;l=j;h=M;d=B;p=O;m=P;y=I;g=N;b=D;if(~w)re(w);return 0}return{reset:ne,init:ie,process:oe,finish:ae,hmac_reset:se,hmac_init:ue,hmac_finish:fe,pbkdf2_generate_block:le}},ae=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),se=128,ce=64,ue=function(e){function t(){var t=e.call(this)||this;return t.NAME="sha512",t.BLOCK_SIZE=se,t.HASH_SIZE=ce,t.heap=u(),t.asm=oe({Uint8Array:Uint8Array},null,t.heap.buffer),t.reset(),t}return ae(t,e),t.NAME="sha512",t}(J),fe=function(){function e(e,t,r){if(!e.HASH_SIZE)throw new SyntaxError("option 'hash' supplied doesn't seem to be a valid hash function");this.hash=e,this.BLOCK_SIZE=this.hash.BLOCK_SIZE,this.HMAC_SIZE=this.hash.HASH_SIZE,this.result=null,this.key=function(e,t){var r=new Uint8Array(e.BLOCK_SIZE);t.length>e.BLOCK_SIZE?r.set(e.reset().process(t).finish().result):r.set(t);return r}(this.hash,t);for(var n=new Uint8Array(this.key),i=0;i2&&(this.key[2]=new W(e[2])),t>3&&(this.key[3]=new G(new W(e[3])),this.key[4]=new G(new W(e[4])),this.key[5]=new W(e[5]),this.key[6]=new W(e[6]),this.key[7]=new W(e[7]))}return e.prototype.encrypt=function(e){if(!this.key)throw new p("no key is associated with the instance");if(this.key[0].compare(e)<=0)throw new RangeError("data too large");var t=this.key[0],r=this.key[1],n=t.power(e,r).toBytes(),i=t.bitLength+7>>3;if(n.length>3;if(t.length0?r:null}return e.prototype.encrypt=function(e,t){var r=Math.ceil(this.rsa.key[0].bitLength/8),n=this.hash.HASH_SIZE,i=e.byteLength||e.length||0,o=r-i-2*n-2;if(i>r-2*this.hash.HASH_SIZE-2)throw new m("data too large");var a=new Uint8Array(r),s=a.subarray(1,n+1),c=a.subarray(n+1);if(c.set(e,n+o+1),c.set(this.hash.process(this.label||new Uint8Array(0)).finish().result,0),c[n+o]=1,void 0!==t){if(s.length!==t.length)throw new m("random size must equal the hash size");s.set(t)}else F(s);for(var u=this.RSA_MGF1_generate(s,c.length),f=0;f>>24,i[1]=a>>>16&255,i[2]=a>>>8&255,i[3]=255&a;var s=n.subarray(a*r),c=this.hash.reset().process(e).process(i).finish().result;c.length>s.length&&(c=c.subarray(0,s.length)),s.set(c)}return n},e}(),ve=function(){function e(e,t,r){if(void 0===r&&(r=4),this.rsa=new ge(e),this.hash=t,this.saltLength=r,this.saltLength<0)throw new TypeError("saltLength should be a non-negative number");if(null!==this.rsa.key&&Math.ceil((this.rsa.key[0].bitLength-1)/8)0)if(void 0!==t){if(d.length!==t.length)throw new m("random size must equal the salt size");d.set(t)}else F(d);u[a]=1,f.set(d),c.set(this.hash.reset().process(l).finish().result);for(var p=this.RSA_MGF1_generate(c,u.length),y=0;y>>g),this.rsa.decrypt(new W(s)),this.rsa.result},e.prototype.verify=function(e,t){var r=this.rsa.key[0].bitLength,n=this.hash.HASH_SIZE,i=Math.ceil((r-1)/8),o=this.saltLength,a=i-o-n-2;this.rsa.encrypt(new W(e));var s=this.rsa.result;if(188!==s[i-1])throw new y("bad signature");var c=s.subarray(i-n-1,i-1),u=s.subarray(0,i-n-1),f=u.subarray(a+1),l=8*i-r+1;if(l%8&&s[0]>>>8-l)throw new y("bad signature");for(var h=this.RSA_MGF1_generate(c,u.length),d=0;d>>l);for(d=0;d>>24,i[1]=a>>>16&255,i[2]=a>>>8&255,i[3]=255&a;var s=n.subarray(a*r),c=this.hash.reset().process(e).process(i).finish().result;c.length>s.length&&(c=c.subarray(0,s.length)),s.set(c)}return n},e}(),we=function(){function e(e,t){this.rsa=new ge(e),this.hash=t}return e.prototype.sign=function(e){if(!this.rsa.key)throw new p("no key is associated with the instance");var t=_e(this.hash),r=this.hash.HASH_SIZE,n=t.length+r,i=this.rsa.key[0].bitLength+7>>3;if(i>3;if(o>1),n=0;n>1]=parseInt(e.substr(n,2),16);return r},r.base64_to_bytes=function(e){return a(i(e))},r.bytes_to_string=s,r.bytes_to_hex=function(e){for(var t="",r=0;r=0;u--)if(f[u]!==l[u])return!1;for(u=f.length-1;u>=0;u--)if(c=f[u],!b(e[c],t[c],r,n))return!1;return!0}(e,t,r,a))}return r?e===t:e==t}function v(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function w(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function x(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&y(i,r,"Missing expected exception"+n);var a="string"==typeof n,s=!e&&i&&!r;if((!e&&o.isError(i)&&a&&w(i,r)||s)&&y(i,r,"Got unwanted exception"+n),e&&i&&r&&!w(i,r)||!e&&i)throw i}l.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return p(m(e.actual),128)+" "+e.operator+" "+p(m(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||y;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var n=r.stack,i=d(t),o=n.indexOf("\n"+i);if(o>=0){var a=n.indexOf("\n",o+1);n=n.substring(a+1)}this.stack=n}}},o.inherits(l.AssertionError,Error),l.fail=y,l.ok=g,l.equal=function(e,t,r){e!=t&&y(e,t,r,"==",l.equal)},l.notEqual=function(e,t,r){e==t&&y(e,t,r,"!=",l.notEqual)},l.deepEqual=function(e,t,r){b(e,t,!1)||y(e,t,r,"deepEqual",l.deepEqual)},l.deepStrictEqual=function(e,t,r){b(e,t,!0)||y(e,t,r,"deepStrictEqual",l.deepStrictEqual)},l.notDeepEqual=function(e,t,r){b(e,t,!1)&&y(e,t,r,"notDeepEqual",l.notDeepEqual)},l.notDeepStrictEqual=function e(t,r,n){b(t,r,!0)&&y(t,r,n,"notDeepStrictEqual",e)},l.strictEqual=function(e,t,r){e!==t&&y(e,t,r,"===",l.strictEqual)},l.notStrictEqual=function(e,t,r){e===t&&y(e,t,r,"!==",l.notStrictEqual)},l.throws=function(e,t,r){x(!0,e,t,r)},l.doesNotThrow=function(e,t,r){x(!1,e,t,r)},l.ifError=function(e){if(e)throw e};var _=Object.keys||function(e){var t=[];for(var r in e)a.call(e,r)&&t.push(r);return t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":1362}],203:[function(e,t,r){(function(e,t){"use strict";class n{constructor(e){this.tasks=[],this.count=e}sched(){if(this.count>0&&this.tasks.length>0){this.count--;let e=this.tasks.shift();if(void 0===e)throw"Unexpected undefined value in tasks list";e()}}acquire(){return new Promise((r,n)=>{this.tasks.push(()=>{var e=!1;r(()=>{e||(e=!0,this.count++,this.sched())})}),e&&e.nextTick?e.nextTick(this.sched.bind(this)):t(this.sched.bind(this))})}use(e){return this.acquire().then(t=>e().then(e=>(t(),e)).catch(e=>{throw t(),e}))}}r.Semaphore=n;r.Mutex=class extends n{constructor(){super(1)}}}).call(this,e("_process"),e("timers").setImmediate)},{_process:898,timers:1303}],204:[function(e,t,r){t.exports={default:e("core-js/library/fn/json/stringify"),__esModule:!0}},{"core-js/library/fn/json/stringify":210}],205:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/assign"),__esModule:!0}},{"core-js/library/fn/object/assign":211}],206:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/define-property"),__esModule:!0}},{"core-js/library/fn/object/define-property":212}],207:[function(e,t,r){t.exports={default:e("core-js/library/fn/object/keys"),__esModule:!0}},{"core-js/library/fn/object/keys":213}],208:[function(e,t,r){t.exports={default:e("core-js/library/fn/promise"),__esModule:!0}},{"core-js/library/fn/promise":214}],209:[function(e,t,r){"use strict";r.__esModule=!0;var n,i=e("../core-js/promise"),o=(n=i)&&n.__esModule?n:{default:n};r.default=function(e){return function(){var t=e.apply(this,arguments);return new o.default((function(e,r){return function n(i,a){try{var s=t[i](a),c=s.value}catch(e){return void r(e)}if(!s.done)return o.default.resolve(c).then((function(e){n("next",e)}),(function(e){n("throw",e)}));e(c)}("next")}))}}},{"../core-js/promise":208}],210:[function(e,t,r){var n=e("../../modules/_core"),i=n.JSON||(n.JSON={stringify:JSON.stringify});t.exports=function(e){return i.stringify.apply(i,arguments)}},{"../../modules/_core":222}],211:[function(e,t,r){e("../../modules/es6.object.assign"),t.exports=e("../../modules/_core").Object.assign},{"../../modules/_core":222,"../../modules/es6.object.assign":282}],212:[function(e,t,r){e("../../modules/es6.object.define-property");var n=e("../../modules/_core").Object;t.exports=function(e,t,r){return n.defineProperty(e,t,r)}},{"../../modules/_core":222,"../../modules/es6.object.define-property":283}],213:[function(e,t,r){e("../../modules/es6.object.keys"),t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":222,"../../modules/es6.object.keys":284}],214:[function(e,t,r){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.promise"),e("../modules/es7.promise.finally"),e("../modules/es7.promise.try"),t.exports=e("../modules/_core").Promise},{"../modules/_core":222,"../modules/es6.object.to-string":285,"../modules/es6.promise":286,"../modules/es6.string.iterator":287,"../modules/es7.promise.finally":288,"../modules/es7.promise.try":289,"../modules/web.dom.iterable":290}],215:[function(e,t,r){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],216:[function(e,t,r){t.exports=function(){}},{}],217:[function(e,t,r){t.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},{}],218:[function(e,t,r){var n=e("./_is-object");t.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":239}],219:[function(e,t,r){var n=e("./_to-iobject"),i=e("./_to-length"),o=e("./_to-absolute-index");t.exports=function(e){return function(t,r,a){var s,c=n(t),u=i(c.length),f=o(a,u);if(e&&r!=r){for(;u>f;)if((s=c[f++])!=s)return!0}else for(;u>f;f++)if((e||f in c)&&c[f]===r)return e||f||0;return!e&&-1}}},{"./_to-absolute-index":271,"./_to-iobject":273,"./_to-length":274}],220:[function(e,t,r){var n=e("./_cof"),i=e("./_wks")("toStringTag"),o="Arguments"==n(function(){return arguments}());t.exports=function(e){var t,r,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),i))?r:o?n(t):"Object"==(a=n(t))&&"function"==typeof t.callee?"Arguments":a}},{"./_cof":221,"./_wks":279}],221:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],222:[function(e,t,r){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},{}],223:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":215}],224:[function(e,t,r){t.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},{}],225:[function(e,t,r){t.exports=!e("./_fails")((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},{"./_fails":229}],226:[function(e,t,r){var n=e("./_is-object"),i=e("./_global").document,o=n(i)&&n(i.createElement);t.exports=function(e){return o?i.createElement(e):{}}},{"./_global":231,"./_is-object":239}],227:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],228:[function(e,t,r){var n=e("./_global"),i=e("./_core"),o=e("./_ctx"),a=e("./_hide"),s=e("./_has"),c=function(e,t,r){var u,f,l,h=e&c.F,d=e&c.G,p=e&c.S,m=e&c.P,y=e&c.B,g=e&c.W,b=d?i:i[t]||(i[t]={}),v=b.prototype,w=d?n:p?n[t]:(n[t]||{}).prototype;for(u in d&&(r=t),r)(f=!h&&w&&void 0!==w[u])&&s(b,u)||(l=f?w[u]:r[u],b[u]=d&&"function"!=typeof w[u]?r[u]:y&&f?o(l,n):g&&w[u]==l?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(l):m&&"function"==typeof l?o(Function.call,l):l,m&&((b.virtual||(b.virtual={}))[u]=l,e&c.R&&v&&!v[u]&&a(v,u,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},{"./_core":222,"./_ctx":223,"./_global":231,"./_has":232,"./_hide":233}],229:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],230:[function(e,t,r){var n=e("./_ctx"),i=e("./_iter-call"),o=e("./_is-array-iter"),a=e("./_an-object"),s=e("./_to-length"),c=e("./core.get-iterator-method"),u={},f={};(r=t.exports=function(e,t,r,l,h){var d,p,m,y,g=h?function(){return e}:c(e),b=n(r,l,t?2:1),v=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(d=s(e.length);d>v;v++)if((y=t?b(a(p=e[v])[0],p[1]):b(e[v]))===u||y===f)return y}else for(m=g.call(e);!(p=m.next()).done;)if((y=i(m,b,p.value,t))===u||y===f)return y}).BREAK=u,r.RETURN=f},{"./_an-object":218,"./_ctx":223,"./_is-array-iter":238,"./_iter-call":240,"./_to-length":274,"./core.get-iterator-method":280}],231:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],232:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],233:[function(e,t,r){var n=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":225,"./_object-dp":251,"./_property-desc":261}],234:[function(e,t,r){var n=e("./_global").document;t.exports=n&&n.documentElement},{"./_global":231}],235:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")((function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a}))},{"./_descriptors":225,"./_dom-create":226,"./_fails":229}],236:[function(e,t,r){t.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},{}],237:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":221}],238:[function(e,t,r){var n=e("./_iterators"),i=e("./_wks")("iterator"),o=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||o[i]===e)}},{"./_iterators":245,"./_wks":279}],239:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],240:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){var o=e.return;throw void 0!==o&&n(o.call(e)),t}}},{"./_an-object":218}],241:[function(e,t,r){"use strict";var n=e("./_object-create"),i=e("./_property-desc"),o=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),(function(){return this})),t.exports=function(e,t,r){e.prototype=n(a,{next:i(1,r)}),o(e,t+" Iterator")}},{"./_hide":233,"./_object-create":250,"./_property-desc":261,"./_set-to-string-tag":265,"./_wks":279}],242:[function(e,t,r){"use strict";var n=e("./_library"),i=e("./_export"),o=e("./_redefine"),a=e("./_hide"),s=e("./_iterators"),c=e("./_iter-create"),u=e("./_set-to-string-tag"),f=e("./_object-gpo"),l=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(e,t,r,p,m,y,g){c(r,t,p);var b,v,w,x=function(e){if(!h&&e in E)return E[e];switch(e){case"keys":case"values":return function(){return new r(this,e)}}return function(){return new r(this,e)}},_=t+" Iterator",k="values"==m,S=!1,E=e.prototype,A=E[l]||E["@@iterator"]||m&&E[m],T=A||x(m),C=m?k?x("entries"):T:void 0,j="Array"==t&&E.entries||A;if(j&&(w=f(j.call(new e)))!==Object.prototype&&w.next&&(u(w,_,!0),n||"function"==typeof w[l]||a(w,l,d)),k&&A&&"values"!==A.name&&(S=!0,T=function(){return A.call(this)}),n&&!g||!h&&!S&&E[l]||a(E,l,T),s[t]=T,s[_]=d,m)if(b={values:k?T:x("values"),keys:y?T:x("keys"),entries:C},g)for(v in b)v in E||o(E,v,b[v]);else i(i.P+i.F*(h||S),t,b);return b}},{"./_export":228,"./_hide":233,"./_iter-create":241,"./_iterators":245,"./_library":246,"./_object-gpo":254,"./_redefine":263,"./_set-to-string-tag":265,"./_wks":279}],243:[function(e,t,r){var n=e("./_wks")("iterator"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(e){}t.exports=function(e,t){if(!t&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},e(o)}catch(e){}return r}},{"./_wks":279}],244:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],245:[function(e,t,r){t.exports={}},{}],246:[function(e,t,r){t.exports=!0},{}],247:[function(e,t,r){var n=e("./_global"),i=e("./_task").set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,s=n.Promise,c="process"==e("./_cof")(a);t.exports=function(){var e,t,r,u=function(){var n,i;for(c&&(n=a.domain)&&n.exit();e;){i=e.fn,e=e.next;try{i()}catch(n){throw e?r():t=void 0,n}}t=void 0,n&&n.enter()};if(c)r=function(){a.nextTick(u)};else if(!o||n.navigator&&n.navigator.standalone)if(s&&s.resolve){var f=s.resolve(void 0);r=function(){f.then(u)}}else r=function(){i.call(n,u)};else{var l=!0,h=document.createTextNode("");new o(u).observe(h,{characterData:!0}),r=function(){h.data=l=!l}}return function(n){var i={fn:n,next:void 0};t&&(t.next=i),e||(e=i,r()),t=i}}},{"./_cof":221,"./_global":231,"./_task":270}],248:[function(e,t,r){"use strict";var n=e("./_a-function");function i(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)}t.exports.f=function(e){return new i(e)}},{"./_a-function":215}],249:[function(e,t,r){"use strict";var n=e("./_descriptors"),i=e("./_object-keys"),o=e("./_object-gops"),a=e("./_object-pie"),s=e("./_to-object"),c=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")((function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=u({},e)[r]||Object.keys(u({},t)).join("")!=n}))?function(e,t){for(var r=s(e),u=arguments.length,f=1,l=o.f,h=a.f;u>f;)for(var d,p=c(arguments[f++]),m=l?i(p).concat(l(p)):i(p),y=m.length,g=0;y>g;)d=m[g++],n&&!h.call(p,d)||(r[d]=p[d]);return r}:u},{"./_descriptors":225,"./_fails":229,"./_iobject":237,"./_object-gops":253,"./_object-keys":256,"./_object-pie":257,"./_to-object":275}],250:[function(e,t,r){var n=e("./_an-object"),i=e("./_object-dps"),o=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),s=function(){},c=function(){var t,r=e("./_dom-create")("iframe"),n=o.length;for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",(t=r.contentWindow.document).open(),t.write("